1. 程式人生 > >現在異常用的溜得飛起

現在異常用的溜得飛起

主動 編譯 tun 等於 turn 導致 ret 我們 必須

return 使線程跳出函數,之後需要進行接收
throw RuntimeException 使線程跳出函數, 之後需要進行接收
區別在於跳出函數的範圍,return的範圍是固定的,往外跳一層
throw RuntimeException 可以不跳出函數層,也可以無限往上跳
這個的大部分思路我們肯定想的到,但是當我們限定跳出類型時會不會有影響呢
換句話說能否在限定層的外面進行接收呢,我們知道,對於運行時異常無法限定
因為我還沒見識過因為限定了函數層對外拋出的異常,而導致運行時異常無法拋出的情況
應為通常限定後並不會在內層對運行時異常進行接收,相反外層依舊可以感知到運行時異常
一切就顯而易見了
那麽在本質上等於運行時異常的throw RuntimeException(唯一區別在於後者為顯示的)也是如是
顯式和隱式運行時異常,可以當return用,
顯時運行時異常(寫死的retun),通過編譯,合乎邏輯的運行
隱式運行時異常(隨機的return),無法通過編譯,假設能編譯運行,只能在部分情況下合乎邏輯,所以往往需要顯式的return來支持

所以說,運行時異常是個很有用的東西,讓它自動拋出只利用了系統異常的冰上一角(浪費了好東西)的,我們完全可以主動拋出,或是繼承運行時異常,現對異常狀況的“return”處理

運行時異常明顯是運行比編譯多做一層,所以說顯式異常並不需要調用者知道,調用者直接跳過編譯階段思考,直接當做運行時要考慮異常情況做最壞打算(所有地方都有運行時異常,那也就不需要拋出的標示了)。

io異常不存在運行時隱式拋出的異常,就是說怎麽編譯的就怎麽運行,外層必須要清晰裏層存在的顯式異常選擇(需要拋出標誌來識別哪裏拋出的)

現在異常用的溜得飛起