如何使用 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,所以必须在新异常的构造函数中指定此属性。