2 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
Exception
是所有異常類的父類, catch(Exception)
能捕獲到所有的異常
通常異常又分為Exception
和RuntimeException
Exception
必須捕獲, 發(fā)生異常時(shí), 會(huì)執(zhí)行catch
中的業(yè)務(wù)RuntimeException
, 發(fā)生異常時(shí), 如果不捕獲會(huì)中斷當(dāng)前線程, 如果捕獲和Exception
一樣
通常線程退出(死亡)的條件
線程業(yè)務(wù)執(zhí)行完畢
線程發(fā)生未捕獲的
RuntimeException
你給的文章中重啟線程的本質(zhì)是讓上一個(gè)線程A
已經(jīng)結(jié)束了(break
), 調(diào)用Observable#notifyObservers()
重新啟動(dòng)了一個(gè)線程A1
,也就是說如果沒有調(diào)用Observable#notifyObservers()
的話, 是不會(huì)重啟線程的.
所以, 如果在調(diào)用Observable#notifyObservers()
之前發(fā)生了RuntimeException
, 而且未捕獲的話, 線程也就不會(huì)重啟了.

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
一般情況下被觀察的線程異常發(fā)生位置可以確定,在確定的位置捕捉異常并重啟線程。題主連接的處理方法是可行的。
添加回答
舉報(bào)