C# - 框架中的异常处理
本文关键字:异常处理 框架 | 更新日期: 2023-09-27 18:36:20
我必须用C#编写一个FTP(AUTH TSL)框架。我是编写框架的菜鸟.
例如,当我证明一个文件存在而它不存在时,我该怎么办?
- 为使用框架的程序员抛出异常?
- 打印异常消息 (Console.WriteLine()) 而不抛出例外?
在这种情况下,什么是专业?
实际上是一个
广泛的问题,但有一些线索可以让您上路:
- 永远不要在框架中使用
Console.WriteLine()
或任何类似的东西。 - 对于像
Framework.FileExists
这样的方法,如果文件不存在,只需返回false
值。这就是布尔返回值的真正本质。这更具有语义。 - 对于遇到问题的操作,请引发自定义或预定义异常。例如,如果您需要一个参数,并且想要确保没有将 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.");
}
或检查更具体的原因,然后重试。
编辑:正如我在对您的原始帖子的评论中所写的那样:如果发生真正意外的事情或用户输入明显无效,请抛出异常。
我会抛出一个异常,因为这样框架的用户就很清楚发生了什么。但我会选择我自己的例外类。
我不会使用返回代码,因为这样用户必须知道它们并解释它们。可能会出错。