根据Joshua Bloch在《Effective Java》中的说法:
\n\n异常翻译
\n较高层应捕获较低级别的异常\n并在其位置抛出可以用\n较高级别抽象解释的异常。
try {\n // Use lower-level abstraction to do our bidding\n ...\n} catch(LowerLevelException e) {\n throw new HigherLevelException(...);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n异常链接
\n它是异常转换的特殊形式。\n在较低级别的异常可能有助于调试\n导致较高级别异常的问题的情况下。较低级别的异常(原因)被传递给较高级别的异常,后者提供\n访问器方法 (Throwable.getCause) 来检索较低级别的异常:
try {\n ... // Use lower-level abstraction to do our bidding\n} catch (LowerLevelException cause) {\n throw new HigherLevelException(cause);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n更高级别的异常\xe2\x80\x99s 构造函数将原因传递给链式感知超类构造函数,因此它最终传递给 Throwable\xe2\x80\x99s 链式感知构造函数之一,例如 Throwable(Throwable):
\n\n// Exception with chaining-aware constructor\nclass HigherLevelException extends Exception {\n HigherLevelException(Throwable cause) {\n super(cause);\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
2818 次 |
最近记录: |