以下靜態輔助函數是否爲反模式?從輔助函數中拋出異常
public class CustomException extends RuntimeException {
// ...
public static void rethrow(String s, Exception e) throws CustomException {
throw new CustomException(s + "\n" + "Exception: " + e.getMessage());
}
}
在http://javapeanuts.blogspot.com/2012/02/exception-management-antipatterns.html或其他地方看不到它。
一個直接的問題是靜態的警告會出現問題,例如我不能做了以下幾點:
final Blah blah = null;
try {
blah = foo();
}
catch (Exception e) {
CustomException.rethrow("Couldn't blah", e);
}
bar = blah.bar(); // ERROR: Variable 'blah' might not have been initialized.
Hmmmm,我想我解決了這個問題。 :-)我應該爲CustomException創建一個構造函數,它將String和Exception作爲參數。
是的,您將失去原始異常中的堆棧跟蹤信息。 – nickb