3

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

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

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

4

3 回答 3

4

实际上是一个广泛的问题,但有一些线索可以让你上路:

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

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

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

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

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

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

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

于 2012-06-06T12:45:23.987 回答
0

我会抛出一个异常,因为框架的用户很清楚发生了什么。但我会编写自己的异常类。

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

于 2012-06-06T11:55:44.337 回答