C# - 框架中的异常处理

本文关键字:异常处理 框架 | 更新日期: 2023-09-27 18:36:20

我必须用C#编写一个FTP(AUTH TSL)框架。我是编写框架的菜鸟.
例如,当我证明一个文件存在而它不存在时,我该怎么办?

  • 为使用框架的程序员抛出异常?
  • 打印异常消息 (Console.WriteLine()) 而不抛出例外?

在这种情况下,什么是专业?

C# - 框架中的异常处理

实际上是一个

广泛的问题,但有一些线索可以让您上路:

  1. 永远不要在框架中使用Console.WriteLine()或任何类似的东西。
  2. 对于像 Framework.FileExists 这样的方法,如果文件不存在,只需返回false值。这就是布尔返回值的真正本质。这更具有语义。
  3. 对于遇到问题的操作,请引发自定义或预定义异常。例如,如果您需要一个参数,并且想要确保没有将 null 传递给您的方法,那么只需检查方法主体中的参数,如果它是 null,则抛出 ArgumentNullException

要将"错误代码"作为返回值传递回去,通常使用枚举。您的上传方法可能会返回

public enum UploadResult
{
    Success,
    PasswordInvalid,
    UserInvalid,
    FileNotFound,
    HostNotFound
}

然后,框架的用户可以轻松地像这样使用它:

if (Ftp.Upload(User, Pass, Host, File) != UploadResult.Success)
{
    MessageBox.Show("Sorry, something went terribly wrong.");
}

或检查更具体的原因,然后重试。

编辑:正如我在对您的原始帖子的评论中所写的那样:如果发生真正意外的事情或用户输入明显无效,请抛出异常。

我会抛出一个异常,因为这样框架的用户就很清楚发生了什么。但我会选择我自己的例外类。

我不会使用返回代码,因为这样用户必须知道它们并解释它们。可能会出错。