為什么要處理異常,使用場景凑阶?

大家好猿规,我是IT修真院深圳分院第6期學(xué)員,一枚正直善良的JAVA程序員宙橱。

今天給大家分享一下姨俩,修真院官網(wǎng)任務(wù)中用到的知識(shí)點(diǎn),異常處理师郑。

1.背景介紹

在理想境界中环葵,程序永遠(yuǎn)不會(huì)出現(xiàn)問題,用戶輸入的數(shù)據(jù)永遠(yuǎn)是正確的宝冕,邏輯沒有任何問題 张遭,選擇打開的文件也一定是存在的,內(nèi)存永遠(yuǎn)是夠用的……反正沒有任何問題地梨!但是一旦出現(xiàn)這些問題菊卷,如果處理不好,程序就不能正常運(yùn)行了宝剖,用戶就有可能再也不使用這個(gè)程序了洁闰。

2.知識(shí)剖析

對比一下我們就會(huì)發(fā)現(xiàn),RuntimeException 是在程序中可以完全避免的万细,比如數(shù)組越界異常扑眉,只要我們在程序里作個(gè)判斷,如果要訪問的數(shù)組元素下標(biāo)和數(shù)組的長度作一下比較就知道會(huì)不會(huì)越界,再比如空指針異常襟雷,如果在訪問對象時(shí)判斷一下對象的變量是否為空就可以了。

而非RuntimeException 則是程序無法避免的仁烹,比如IO異常耸弄,你的程序正在讀一個(gè)文件,而這個(gè)文件所在磁盤出現(xiàn)了壞道卓缰,這就必然會(huì)引發(fā)IOException计呈,這是不是靠編程高手編寫完美的程序就可以法避免得了的,程序所能做的只有出現(xiàn)異常之后怎么處理的問題征唬。

異常處理程序可以做的不僅僅是打印錯(cuò)誤消息或停止程序捌显。 它們可以執(zhí)行錯(cuò)誤恢復(fù),提示用戶做出決定总寒,或者使用異常鏈將錯(cuò)誤傳播到更高級別的處理程序

3.常見問題

1.什么時(shí)候拋出扶歪,什么時(shí)候捕獲?

2.在Controller里摄闸,大段的Try Catch 會(huì)有什么壞處善镰?

4.解決方案

1.什么時(shí)候拋出,什么時(shí)候捕獲年枕。炫欺?

Java異常處理原則之一:延遲捕獲

意思是,當(dāng)異常發(fā)生時(shí)熏兄,不應(yīng)立即捕獲品洛,而是應(yīng)該考慮當(dāng)前作用域是否有有能力處理這一異常的能力,如果沒有摩桶,則應(yīng)將該異常繼續(xù)向上拋出桥状,交由更上層的作用域來處理。

一個(gè)例子:

某方法String readFile(String filename)典格,會(huì)去嘗試讀出指定文件的內(nèi)容并返回岛宦,其使用FileInputStream來讀取指定文件,而FileInputStream的構(gòu)造方法會(huì)拋出FileNotFoundException耍缴,這是一個(gè)Checked Exception砾肺。

那么readFile方法是應(yīng)該捕獲這個(gè)異常,還是拋出這個(gè)異常呢防嗡?

很顯然應(yīng)該拋出变汪。因?yàn)閞eadFile這個(gè)方法可能會(huì)在不同的場景下,被不同的代碼調(diào)用蚁趁,在這些場景中裙盾,出現(xiàn)“文件未找到”的情況時(shí)的處理邏輯可能是不同的,例如某場景下要發(fā)出告警信息,另一場景下可能會(huì)嘗試從另一個(gè)文件中讀取番官,第三個(gè)場景下可能需要將錯(cuò)誤信息提示給用戶庐完。在這種情況下,在readFile方法內(nèi)的作用域中徘熔,是處理不了這個(gè)異常的门躯,需要拋出,交由上層的酷师,具備了處理這個(gè)異常的能力的作用域來處理讶凉。

2.在Controller里,大段的Try Catch 會(huì)有什么壞處山孔?

1.try catch 的代價(jià)比較大懂讯。相對于判斷返回值,拋出異常到捕獲台颠,需要更多的cpu指令和代碼

2.Java的異常機(jī)制是由JVM控制的褐望,業(yè)務(wù)邏輯復(fù)雜的情況下,會(huì)影響controller的執(zhí)行效率

5.編碼實(shí)戰(zhàn)

6.擴(kuò)展思考

spring MVC 異常統(tǒng)一處理蓉媳?

7.參考文獻(xiàn)

1.知乎

2.https://blog.csdn.net/eson_15/article/details/51731567

8.更多討論

1.大段try/catch到底能不能寫譬挚?

A:如果try中的異常較統(tǒng)一且確定,可以統(tǒng)一處理酪呻,使代碼可讀性更好减宣。

2.在方法名后拋出異常和在方法體中排除異常有什么區(qū)別?

A:如果方法體內(nèi)拋出玩荠,方法名后也要拋出漆腌。

3.springmvc? ExceptionHandler是如何實(shí)現(xiàn)的?

A:原理不太懂阶冈,只能說controller中有對應(yīng)的Exception拋出闷尿,并且springmvc?ExceptionHandler有定義相應(yīng)類型的話就可以自動(dòng)捕獲。

感謝大家觀看

PPT:PPT

視頻:視頻

今天的分享就到這里啦女坑,歡迎大家點(diǎn)贊填具、轉(zhuǎn)發(fā)、留言匆骗、拍磚~

技能樹.IT修真院

“我們相信人人都可以成為一個(gè)工程師劳景,現(xiàn)在開始,找個(gè)師兄碉就,帶你入門盟广,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷梦驮浚”筋量。

這里是技能樹.IT修真院烹吵,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化桨武,成長可見化肋拔,師兄1對1免費(fèi)指導(dǎo)⊙剿幔快來與我一起學(xué)習(xí)吧~

小禮物走一走只损,來簡書關(guān)注我

贊賞支持

作者:blue

鏈接:

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)七咧,非商業(yè)轉(zhuǎn)載請注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叮叹,一起剝皮案震驚了整個(gè)濱河市艾栋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛉顽,老刑警劉巖蝗砾,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異携冤,居然都是意外死亡悼粮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門曾棕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扣猫,“玉大人,你說我怎么就攤上這事翘地∩暧龋” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵衙耕,是天一觀的道長昧穿。 經(jīng)常有香客問我,道長橙喘,這世上最難降的妖魔是什么时鸵? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮厅瞎,結(jié)果婚禮上饰潜,老公的妹妹穿的比我還像新娘。我一直安慰自己磁奖,他們只是感情好囊拜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著比搭,像睡著了一般冠跷。 火紅的嫁衣襯著肌膚如雪南誊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天蜜托,我揣著相機(jī)與錄音抄囚,去河邊找鬼。 笑死橄务,一個(gè)胖子當(dāng)著我的面吹牛幔托,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜂挪,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼重挑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棠涮?” 一聲冷哼從身側(cè)響起谬哀,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎严肪,沒想到半個(gè)月后史煎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驳糯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年篇梭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酝枢。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恬偷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帘睦,到底是詐尸還是另有隱情喉磁,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布官脓,位于F島的核電站协怒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卑笨。R本人自食惡果不足惜孕暇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赤兴。 院中可真熱鬧妖滔,春花似錦、人聲如沸桶良。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陨帆。三九已至曲秉,卻和暖如春采蚀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背承二。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工榆鼠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亥鸠。 一個(gè)月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓妆够,卻偏偏與公主長得像,于是被迫代替她去往敵國和親负蚊。 傳聞我的和親對象是個(gè)殘疾皇子神妹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容