Sea*_*lor 1 .net error-handling
当我需要从函数返回错误消息时,我通常会执行类似下面示例的操作,如果没有错误发生,我只返回一个empyty字符串.这是最佳实践,还是有替代方法从函数返回错误消息?
Function Test() as String
' Do something
If error occured Then
Return "Some error message"
Else
Return ""
End Functon
Run Code Online (Sandbox Code Playgroud)
您应该抛出包含错误消息的异常,而不是返回错误消息.
以下是一个快速概述:http://www.vbdotnetheaven.com/UploadFile/rajeshvs/dotnetException04162005022135AM/dotnetException.aspx
异常处理是处理错误的首选方法.使用您的函数的开发人员可能会忽略错误代码返回值.例外迫使他们注意到.这绝对值得学习.
当您在问题中编写代码时,您可能会认为它会像这样调用:
String message = Test();
// process the message for errors.
Run Code Online (Sandbox Code Playgroud)
许多开发人员只会绕过处理消息,甚至可以像这样调用你的函数:
Test();
// go about your business, happily ignoring the error message
Run Code Online (Sandbox Code Playgroud)
如果您的代码抛出异常,则不能忽略它.开发人员必须至少承认通过在函数调用周围放置一个try块来抛出异常.那时他们被迫用它做点什么.
正如 Erik 和 Bill 所说,异常是 .NET 中传播错误的正常方式。然而,在某些情况下它们并不合适——例如验证用户输入。此时有几种选择:
使用错误代码(例如枚举)来指示错误的类型。例如,您可能有一个代码表示“密码太短”,另一个代码表示“密码不包含任何数字”等。
按照您在问题中建议的方式使用错误消息。我个人会在“没关系”的情况下使用空引用,或者可能使该方法返回布尔值(有效/无效)并为错误消息提供一个输出参数。使用字符串对于国际化来说很糟糕,但在很多方面都比错误代码版本更简单(避免额外的查找,更容易添加新类型的错误等)。对于永远不需要国际化的内部应用程序来说,这可能很好。
我强调,这些只是例外没有意义的情况下的选择——否则,例外才是正确的选择。