如何使用 try/catch 处理异常

try-catch 块的用途是捕获并处理工作代码产生的异常。 某些异常可以在 catch 块中进行处理,问题得以解决并不再出现异常;但是,大多数情况下你唯一可做的是确保引发的异常是合理异常。

示例

在此示例中,IndexOutOfRangeException 不是最合理的异常:ArgumentOutOfRangeException 对于此方法来说更有意义,因为此错误是由调用方传递的 index 参数引起的。

static int GetInt(int[] array, int index)
{
    try
    {
        return array[index];
    }
    catch (IndexOutOfRangeException e)  // CS0168
    {
        Console.WriteLine(e.Message);
        // Set IndexOutOfRangeException to the new exception's InnerException.
        throw new ArgumentOutOfRangeException("index parameter is out of range.", e);
    }
}

注释

引发异常的代码包含在 try 块中。 在此块后面紧挨着添加 catch 语句以处理 IndexOutOfRangeException 异常(如果发生此异常)。 catch 块处理 IndexOutOfRangeException 并改为引发更合理的 ArgumentOutOfRangeException。 为了向调用方提供尽可能多的信息,请考虑将原始异常指定为新异常的 InnerException。 因为 InnerException 属性为 read-only,所以必须在新异常的构造函数中指定此属性。