不建议简单地抓住System.Exception。相反,仅应捕获“已知”异常。
System.Exception
现在,这有时会导致不必要的重复代码,例如:
try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; }
我想知道:有没有一种方法可以捕获两个异常并且只WebId = Guid.Empty调用一次电话?
WebId = Guid.Empty
给定的示例非常简单,因为它只是一个GUID。但是,请想象一下在代码中多次修改对象的情况,并且如果其中一种操作以预期的方式失败,则您想“重置” object。但是,如果有意外的例外,我仍然想将其提高。
GUID
object
捕捉System.Exception并打开类型
catch (Exception ex) { if (ex is FormatException || ex is OverflowException) { WebId = Guid.Empty; return; } throw; }