当某一成员无法成功执行它应执行的操作时,将引发异常。这称为执行故障。例如,如果 Connect 方法无法连接到指定的远程终结点,则这就是一个执行故障,将有一个异常被引发。
下列准则可帮助确保在适当时引发异常。
不要返回错误代码。异常是报告框架中的错误的主要手段。
异常设计准则讨论了使用异常的许多好处。
通过引发异常来报告执行故障。如果某一成员无法按预期方式成功执行,则应将这种情况视为一个执行故障并引发一个异常。
如果代码遇到继续执行则不安全的情况,应考虑通过调用 System.Environment.FailFast(System.String)(.NET Framework 2.0 中的一种功能)来终止进程,而不是引发异常。
尽可能不对正常控制流使用异常。除了系统故障及可能导致争用状态的操作之外,框架设计人员还应设计一些 API 以便用户可以编写不引发异常的代码。例如,可以提供一种在调用成员之前检查前提条件的方法,以便用户可以编写不引发异常的代码。
下面的代码示例演示如何进行测试以防止在消息字符串为 null(在 Visual Basic 中为 Nothing)时引发异常。
1: public class Doer
2: {
3: // Method that can potential throw exceptions often.
4: public static void ProcessMessage(string message)
5: {
6: if (message == null)
7: {
8: throw new ArgumentNullException("message");
9: }
10: }
11: // Other methods...
12: }
13:
14: public class Tester
15: {
16: public static void TesterDoer(ICollection<string> messages)
17: {
18: foreach (string message in messages)
19: {
20: // Test to ensure that the call
21: // won't cause the exception.
22: if (message != null)
23: {
24: Doer.ProcessMessage(message);
25: }
26: }
27: }
28: }
29: