不鼓励简单地 catch 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; }