[英]How to handle exceptions?
這是關於最佳.net實踐的問題。 我總是在我的所有Web和窗體表單應用程序中捕獲並存儲有關異常的信息,如下所示:
這是處理異常的最佳方法嗎? 或者我應該在下一個項目中做些不同的事情?
除非我有一些具體的原因,否則我不會加1和2; 例如改變(包裝)消息; 沒有必要,因為無論如何異常都會提升。 並且做得不正確你可能會意外地刪除所有重要的堆棧跟蹤( throw;
vs throw ex;
- 第一個是首選)。
您可以在處理例外的最佳實踐中獲得最佳答案
以下代碼存在問題,因為它會覆蓋e
的原始堆棧跟蹤,這會使問題更難診斷:
public void Foo() {
try {
Bar();
} catch(Exception e) {
throw e; // re-throw; overwrites original stacktrace in 'e'
}
}
以下代碼沒有上面的stacktrace覆蓋問題,但仍然是不必要的冗長:
public void Foo() {
try {
Bar();
} catch(Exception e) {
throw; // re-throw; preserves original stacktrace in 'e'
}
}
兩者都會更好地寫成如下。 這是因為, 如果您在catch塊中唯一要做的就是重新拋出異常,則根本不需要編寫catch塊:
public void Foo() {
Bar();
}
以下是不處理異常的方法。
public void method1(){
try{
....
// all the code goes here
// declare any helper methods throw throwable
// eg: private boolean check1() throws Throwable{ ...}
....
}catch(Throwable t){
System.out.println("oops...error...good luck debugging. ");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.