解析java中的error該不應捕捉。本站提示廣大學習愛好者:(解析java中的error該不應捕捉)文章只能為提供參考,不一定能成為您想要的結果。以下是解析java中的error該不應捕捉正文
寫java法式時,平日會被提醒捕捉異常,而又有一些異常是不須要強迫捕捉的,這是一個被說爛了的話題。像我一樣從其他說話轉過去的人確切有點困惑,那我以我的懂得從新說明一遍吧。
異常的基類是Exception,Exception子類有RuntimeException和其它Exception。這些其它的Exception叫做Checked異常,RuntimeException叫做Unchecked異常。
只看名字不太好懂得,說的淺顯點,java為了法式可以或許穩固的運轉,就提醒開辟者捕捉已知異常。編譯器曉得一切類型或辦法能夠拋出的異常,在你應用某品種型或辦法時,編譯器就會提醒你捕捉已知的異常。這些編譯器已知的能夠存在的異常就是Checked異常。例如你在封閉文件流時,IOException曾經在close辦法裡寫明能夠拋出,那末編譯器就提醒你必需捕捉異常。而RuntimeException異常在編譯階段是不曉得的,只要運轉階段能力肯定,好比3/0(3除以0)會報ArithmeticException異常。由於這個除數是運轉階段可以變更的,所以不提醒捕捉。這些RuntimeException就是Unchecked異常。
總之java是盡量的讓法式穩固,曉得的就提醒你,不曉得的就力所不及了。如許說明應當比擬清楚了吧。
下邊要進入正題了。
能夠有些同伙在調試法式時碰到過這類情形,法式明明湧現了異常,也catch(Exception e)了,卻沒有捕捉就任何信息。緣由不過有兩個,1.異常地點的線程跟你捕捉的線程不是統一個線程,2.法式拋出的不是Exception而是Error。Error跟Exception一樣都繼續自Throwable,是指不該該被捕捉的嚴重毛病。其時看到這個說明,我居然傻逼到沒想明確為何不應捕捉Error。由於湧現Error的情形會形成法式直接沒法運轉,所以捕捉了也沒有任何意義。那我的成績又來了,假如不捕捉,那法式出成績加入了,連log都看不見,我該怎樣辦?其實這個假定是不成立的,由於假如Error真的存在,你在開辟情況就曾經發明成績了,基本弗成能宣布到正式情況。
唉,繞了一年夜圈弄了這麼件傻逼事,所以不要再評論辯論Error該不應被捕捉了!
自己學問尚淺,寫文目標是為了獲得年夜家指導。倘使文章幫到了您,那真是好極了。