ByStander的世界 发表于 2013-1-2 23:09:51

[原译]C#中的throw

<div id="cnblogs_post_body">Throw会抛出/传递异常,通过在catch块里使用throw语句.可以改变产生的异常,比如我们可以抛出一个新的异常,throw语句有各种各样的,并且很有必要.
例子
我们首先看一下三个方法,分别叫做A,B,C,他们使用不同的throw语句。方法A使用了无参的throw语句。这可以被看作是rethrow(继续抛出)—他会抛出已经出现的同样的异常
继续,方法B throw一个命名的异常变量。这就不是一个完全的rethrow了—因为他虽然抛出了同样的异常。但是改变了StackTrace(堆栈轨迹),如果有必要的话,我们可以收集一些异常信息,而方法C则创建了一个新的异常。
提示:你可以通过这种方法实现自定义的的错误处理
使用throw语句的例子
<div class="cnblogs_code">using System;class Program{    static void Main()    {    try    {      A();      B();      C(null);    }    catch (Exception ex)    {      Console.WriteLine(ex);    }    }    static void A()    {    // Rethrow 语法.    try    {      int value = 1 / int.Parse("0");    }    catch    {      throw;    }    }    static void B()    {    // 过滤异常类型.    try    {      int value = 1 / int.Parse("0");    }    catch (DivideByZeroException ex)    {      throw ex;    }    }    static void C(string value)    {    // 创建新的异常.    if (value == null)    {      throw new ArgumentNullException("value");    }    }}
页: [1]
查看完整版本: [原译]C#中的throw