如果捕获异常没有专门的处理,只是为了记录日志,那么异常究竟是这样
public void xxx() {
try {
...
...
...
} catch() {
...
}
}
捕获好还是这样
public void xxx() {
try {
...
} catch() {
...
}
try {
...
} catch() {
...
}
try {
...
} catch() {
...
}
}
捕获好,另外,是每一种异常单独捕获
public void xxx() {
try {
...
...
...
} catch(aaException e) {
...
} catch(bbException e) {
...
} catch(Exception e) {
...
}
}
好,还是全部都用Exception捕获
public void xxx() {
try {
...
...
...
} catch(Exception e) {
...
}
}
好?
比較優雅的方式是透過Aop去處理,這樣就不用在商業程式碼裡寫重複的try,catch
用Exception好
只是為了記日誌,最後一種就能夠說明問題所在了。
記錄日誌就沒必要細分了,列印堆疊資訊一目了然
這得根據場景來決定:第三種情況,不同異常分開捕捉,是為了細粒度地處理捕獲到的異常,比如捕捉到了緩存異常,進行db切換,捕捉到了IO異常,進行補救等;第四種是包一個Exception,總的處理一次,但是會丟失一些具體的信息
我的理解,分這麼多異常類型可以認為是switch-case的一種延伸
這個要看情況的,如果自己不需要對異常進行處理,那就直接低層補貨exception就可以,如果需要處理就catch補貨一下處理。例如異常自己定義提示訊息。
把你需要的關注的異常捕獲就好了,其他的異常可能用Exception來捕獲。