编写高质量代码改善C#程序的157个建议——建议62:避免嵌套异常
建议62:避免嵌套异常
应该允许异常在调用堆栈上往上传,不要过多的使用catch,然后再throw。过多的使用catch会带来两个问题:
1)代码更多了。这看上去好像你根本不知道怎么处理异常,所以你总是不停地catch。
2)隐藏了堆栈信息,使你不知道真正发生异常的地方。
无故地嵌套是我们应该极力避免的。当然。如果真的需要捕获这个异常来恢复一些状态,然后重新抛出,代码看起来应该是这样的:
try { //... } catch (Exception) { //工作代码 throw; }
或者:
try { //... } catch { //工作代码 throw; }
尽量避免像下面这样引发异常:
catch (Exception ex) { //工作代码 throw ex; }
直接throw ex而不是throw将会重置堆栈信息。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技