現在異常用的溜得飛起
阿新 • • 發佈:2017-11-04
主動 編譯 tun 等於 turn 導致 ret 我們 必須
return 使線程跳出函數,之後需要進行接收
throw RuntimeException 使線程跳出函數, 之後需要進行接收
區別在於跳出函數的範圍,return的範圍是固定的,往外跳一層
throw RuntimeException 可以不跳出函數層,也可以無限往上跳
這個的大部分思路我們肯定想的到,但是當我們限定跳出類型時會不會有影響呢
換句話說能否在限定層的外面進行接收呢,我們知道,對於運行時異常無法限定
因為我還沒見識過因為限定了函數層對外拋出的異常,而導致運行時異常無法拋出的情況
應為通常限定後並不會在內層對運行時異常進行接收,相反外層依舊可以感知到運行時異常
一切就顯而易見了
那麽在本質上等於運行時異常的throw RuntimeException(唯一區別在於後者為顯示的)也是如是
顯式和隱式運行時異常,可以當return用,
顯時運行時異常(寫死的retun),通過編譯,合乎邏輯的運行
隱式運行時異常(隨機的return),無法通過編譯,假設能編譯運行,只能在部分情況下合乎邏輯,所以往往需要顯式的return來支持
所以說,運行時異常是個很有用的東西,讓它自動拋出只利用了系統異常的冰上一角(浪費了好東西)的,我們完全可以主動拋出,或是繼承運行時異常,現對異常狀況的“return”處理
運行時異常明顯是運行比編譯多做一層,所以說顯式異常並不需要調用者知道,調用者直接跳過編譯階段思考,直接當做運行時要考慮異常情況做最壞打算(所有地方都有運行時異常,那也就不需要拋出的標示了)。
io異常不存在運行時隱式拋出的異常,就是說怎麽編譯的就怎麽運行,外層必須要清晰裏層存在的顯式異常選擇(需要拋出標誌來識別哪裏拋出的)
現在異常用的溜得飛起