赞
踩
什么时候该抛出异常,抛出什么异常?什么时候该捕获异常,捕获之后怎么处理异常?你可能已经使用异常一段时间了,但对 .NET/C# 的异常机制依然有一些疑惑。那么,可以阅读本文。
本文适用于已经入门 .NET/C# 开发,已经开始在实践中抛出和捕获异常,但是对 .NET 异常机制的用法以及原则比较模糊的小伙伴。通过阅读本文,小伙伴们可以迅速在项目中使用比较推荐的异常处理原则来处理异常。
我们大多数小伙伴可能更多的使用 Exception
的类型、Message
属性、StackTrace
以及内部异常来定位问题,但其实 Exception
类型还有更多的信息可以用于辅助定位问题。
Message
用来描述异常原因的详细信息
StackTrace
包含用来确定错误位置的堆栈跟踪(当有调试信息如 PDB 时,这里就会包含源代码文件名和源代码行号)InnerException
包含内部异常信息Source
这个属性包含导致错误的应用程序或对象的名称Data
这是一个字典,可以存放基于键值的任意数据,帮助在异常信息中获得更多可以用于调试的数据HelpLink
这是一个 url,这个 url 里可以提供大量用于说明此异常原因的信息如果你自己写一个自定义异常类,那么你可以在自定义的异常类中记录更多的信息。然而大多数情况下我们都考虑使用 .NET 中自带的异常类,因此可以充分利用 Exception
类中的已有属性在特殊情况下报告更详细的利于调试的异常信息。
捕捉异常的基本语法是:
try
{
// 可能引发异常的代码。
}
catch (FileNotFoundException ex)
{
// 处理一种类型的异常。
}
catch (IOException ex)
{
// 处理另一种类的异常。
}
除此之外,还有 when
关键字用于筛选异常:
try
{
// 可能引发异常的代码。
}
catch (FileNotFoundException ex) when (Path.GetExtension(ex.FileName) is ".png")
{
// 处理一种类型的异常,并且此文件扩展名为 .png。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。