在软件开发过程中,异常处理是不可或缺的一部分。它能够确保程序在遇到错误时能够优雅地处理,而不是简单地崩溃或中断。通过捕获和处理异常,可以为用户提供更好的体验,同时也能够更容易地定位和解决程序中的问题。
有过经验的朋友都知道,简单地捕获System.Exception是不被推荐的。相反,应该只捕获那些‘已知’的异常。
有时,我们可能希望在一个catch块中同时捕获多种不同类型的异常,而不是为每个可能的异常类型都编写一个单独的catch块。这就是“同时捕获多个异常”的含义。
现在,我们来看下面这个简单的例子:
try
{
WebId = new Guid(queryString["web"]);
}
catch (FormatException)
{
WebId = Guid.Empty;
}
catch (OverflowException)
{
WebId = Guid.Empty;
}
现在,大家可以想一个,是否有一种方法可以同时捕获这两种异常,并且只调用一次WebId = Guid.Empty?
给定的例子相对简单,因为它只是一个Guid。但想象一下,如果你的代码中有多次修改一个对象的情况,并且这些操作可能引发异常的情况下,你想要“重置”这个对象。如何在出现异常时统一处理,同时确保非预期的异常能够被正确抛出。
说了这么多,该讲一下具体怎么做了,从C# 6.0开始,引入的异常过滤器。
catch (Exception ex) when (ex is ... || ex is ...)
那么我们就可以这么写这段代码:
try
{
WebId = new Guid(queryStr

本文探讨了在软件开发中异常处理的重要性,介绍了C#6.0后如何使用异常过滤器同时捕获多个异常,以及如何提高代码可读性和自定义异常处理逻辑。作者鼓励读者在实际项目中应用这些技巧并分享经验。

4348

被折叠的 条评论
为什么被折叠?



