2016年6月18日 星期六

android java 中 Exception Error Throwable的分別

Throwable、Error、Exception、RuntimeException 区别 联系

參考上文

實際的經驗:

我有一個 pipeline thread , 就是把一個接一個的 task 丟到 pipeline
裡去執行, 它是一個 queue , 是 fifo 模式, 為的是避免兩個 thread
同時執行, 會有獲取資源衝突的問題, 但當其中某一個 task 出錯
的時候, 也會造成整個 pipeline thread 死掉, 因而後面的 task 也跟
著停止.

今天在解決一個api 16 (android 4.1)誤用 api 19 的
class (StandardCharsets.UTF_8 )時, 突然發現這個錯誤可以用
Throwable 來捕捉, 但用 exception 卻沒辦法.

使用 exception 會因無法捕捉到錯誤, 使整個 pipeline thread 中止,
而用 throwable 來捕捉, 則pipeline thread可繼續存在, 而不影響後
續 task 的執行.

這個誤用api的錯誤, 可能是 error 級的錯誤, 只用 exception 是無法
捕捉的.
所以以後再遇到無法用 exception 捕捉的錯誤, 可試著用 throwable
來試看看.

try {

something...
} catch (Throwable t) {
   Log.e(TAG, "Error in Pipeline Thread", t);
}



  © Blogger templates Psi by Ourblogtemplates.com 2008

Back to TOP