作業中,initCause(e)的作用是什么?。?/h1>
bookNotExists.initCause(e);請問這句代碼起什么作用???
bookNotExists.initCause(e);請問這句代碼起什么作用???
bookNotExists.initCause(e);請問這句代碼起什么作用???
2015-12-20
舉報
2015-12-20
字數太多,發到這里。
不是為了實現哪一句代碼的。initCause()這個方法就是對異常來進行包裝的,目的就是為了出了問題的時候能夠追根究底。因為一個項目,越往底層,可能拋出的異常類型會用很多,如果你在上層想要處理這些異常,你就需要挨個的寫很多catch語句塊來捕捉異常,這樣是很麻煩的。如果我們對底層拋出的異常捕獲后,拋出一個新的統一的異常,會避免這個問題。但是直接拋出一個新的異常,會讓最原始的異常信息丟失,這樣不利于排查問題。舉個例子,在底層會出現一個A異常,然后在中間代碼層捕獲A異常,對上層拋出一個B異常。如果在中間代碼層不對A進行包裝,在上層代碼捕捉到B異常后就不知道為什么會導致B異常的發生,但是包裝以后我們就可以用getCause()方法獲得原始的A異常。這對追查BUG是很有利的。
如果包裝以后:
這樣看應該很明白了吧。
2018-08-29
b.getCause();得到的原始異常是指包裝前的異常嗎?
2017-02-21
多少明白了一些!
2016-08-31
牛叉,有解釋有代碼好贊
2015-12-20
我之前回答過這個問題,你可以去看看
newExc.initCause(e); 這句話是什么意思 可有可無么