摘要:由虛擬機(jī)生成并拋出,,屬于系統(tǒng)內(nèi)部錯(cuò)誤或者資源耗盡等嚴(yán)重情況,屬于需要擔(dān)負(fù)的責(zé)任,這一類異常事件是無法恢復(fù)或者不可能捕獲的,將導(dǎo)致應(yīng)用程序中斷,但是自定義是可以捕獲的。
題目
答案:D
分析 Java 異常的結(jié)構(gòu)體系Throwable 類包含了其線程創(chuàng)建時(shí)線程執(zhí)行堆棧的快照,包含了給出有關(guān)錯(cuò)誤更多的消息字符串,
有顏色的代表運(yùn)行時(shí)異常,非checked exception,可以不try catch ,則由jvm處理,白色的異常代表checked exceptions必須由try-catch捕獲。
非runtimeException 一般是外部錯(cuò)誤,例如:從文件尾后讀取數(shù)據(jù),這并不是程序本身的錯(cuò)誤,而是應(yīng)用環(huán)境的錯(cuò)誤,凡是繼承Throwable的,都可以捕獲,拋出。
ERRORError由虛擬機(jī)生成并拋出,,屬于JVM系統(tǒng)內(nèi)部錯(cuò)誤或者資源耗盡等嚴(yán)重情況,屬于JVM需要擔(dān)負(fù)的責(zé)任,這一類異常事件是無法恢復(fù)或者不可能捕獲的,將導(dǎo)致應(yīng)用程序中斷,但是自定義Error是可以捕獲的。
package com.mousycoder.error; public class MyError extends Error{ public MyError() { super(); } MyError(String msg) { super(msg); } public static void main(String[] args) { try { throw new MyError("error"); } catch (Throwable e) { System.out.println("catching!"); } } }異常機(jī)制
傳統(tǒng)異常是由函數(shù)返回一個(gè)特殊的結(jié)果表示,例如: -1表示異常,有時(shí)候 -1確是表示正確的值,這樣代碼可讀性差,正確的處理和異常處理代碼在一起,異常則由程序員來處理,要求比較高,經(jīng)過改良之后,程序出現(xiàn)異常,則程序流程發(fā)生改變,控制權(quán)轉(zhuǎn)到異常處理器,由異常處理器處理,異常處理器也是有很多的,直到找到一個(gè)適合的異常處理器,并處理異常。
異常的轉(zhuǎn)譯ERROR到Exception
比如講SQLException轉(zhuǎn)成DAOException,讓異常更加準(zhǔn)確的表達(dá)
package com.mousycoder.error; import java.sql.SQLException; public class DAOException extends Throwable{ public DAOException() { super(); } DAOException(String msg,Throwable e){ super(msg, e); } public static void main(String[] args) throws DAOException { SQLException s = new SQLException(); throw new DAOException("dao異常",s); } }
console
Exception in thread "main" com.mousycoder.error.DAOException: dao異常 at com.mousycoder.error.DAOException.main(DAOException.java:16) Caused by: java.sql.SQLException at com.mousycoder.error.DAOException.main(DAOException.java:15)
Spring中DispatcherServlet的doDispatch()方法將Error轉(zhuǎn)成Exception,挽回錯(cuò)誤發(fā)生帶來的負(fù)面影響。
private void triggerAfterCompletionWithError(HttpServletRequest request, HttpServletResponse response, HandlerExecutionChain mappedHandler, Error error) throws Exception, ServletException { ServletException ex = new NestedServletException("Handler processing failed", error); if (mappedHandler != null) { mappedHandler.triggerAfterCompletion(request, response, ex); } throw ex; }
Exception到RuntimeException
將檢查異常轉(zhuǎn)成非檢查異常,讓代碼變得優(yōu)雅,但是增加了系統(tǒng)發(fā)生系統(tǒng)的可能性
Error到RuntimeException
代碼簡潔,統(tǒng)一異常處理
異常鏈將異常的原因一個(gè)一個(gè)串起來,底層信息傳給上層,逐級傳遞
模型:
try { lowLevelOp(); } catch (LowLevelException le) { throw (HighLevelException) new HighLevelException().initCause(le); }
感謝您的耐心閱讀,如果您發(fā)現(xiàn)文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,你的鼓勵(lì)是作者寫作最大的動力,
如果您認(rèn)為本文質(zhì)量不錯(cuò),讀后覺得收獲很大,不妨小額贊助我一下,讓我更有動力繼續(xù)寫出高質(zhì)量的文章。
支付寶
微信
作 者 : @mousycoder
原文出處 : http://mousycoder.com/2015/10/14/thinking-of-interview-question-2/
創(chuàng)作時(shí)間:2015-9-22
更新時(shí)間:2015-10-14
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64547.html
摘要:想必面試題刷的多的同學(xué)對下面這道題目不陌生,能夠立即回答出輸出個(gè),可是你真的懂為什么嗎為什么是輸出為什么是輸出個(gè)這兩個(gè)問題在我腦邊縈繞。同步任務(wù)都好理解,一個(gè)執(zhí)行完執(zhí)行下一個(gè)。本文只是我對這道面試題的一點(diǎn)思考,有誤的地方望批評指正。 想必面試題刷的多的同學(xué)對下面這道題目不陌生,能夠立即回答出輸出10個(gè)10,可是你真的懂為什么嗎?為什么是輸出10?為什么是輸出10個(gè)10?這兩個(gè)問題在我腦...
摘要:直接開始題目是厲害了說句實(shí)話開發(fā)中誰寫成這樣保證會被打死。不過面試就是面試,有面試官的考量點(diǎn)。官方是這么說的。結(jié)果完美,不過小姐姐的意思是數(shù)組的方法會自動觸發(fā)數(shù)組的。 直接開始題目是 if(a==1 && a==2 && a==3){ alert(厲害了) } 說句實(shí)話開發(fā)中誰寫成這樣保證會被打死。 不過面試就是面試,有面試官的考量點(diǎn)。 我理解的點(diǎn)有兩個(gè) 1、隱式類型轉(zhuǎn)換 先說...
摘要:另一個(gè)問題,就是我下面要提及的作用域問題,我當(dāng)時(shí)思考的時(shí)間太久了這是回憶中的面試題實(shí)際略有差異,不糾結(jié)了說一下腳本的運(yùn)行結(jié)果引用錯(cuò)誤中給出的錯(cuò)誤提示。 版權(quán)聲明:此文首發(fā)于我的簡書賬號人生還有多少個(gè)二十年,轉(zhuǎn)載請注明出處。 此處有幾百字嘮叨: 當(dāng)天,我早早起床,跨越上百公里,高德導(dǎo)航,路人指點(diǎn),跌跌撞撞到達(dá)招聘會現(xiàn)場,當(dāng)時(shí)已是中午十二點(diǎn)半,吃了午餐(半瓶白開水),開始準(zhǔn)備投遞...
摘要:首先,我先去上搜索了的定義運(yùn)算符創(chuàng)建一個(gè)用戶定義的對象類型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對象的實(shí)例。 今天看到一道面試題,如下,問: 實(shí)例化 Person 過程中,Person返回什么(或者 p 等于什么)? function Person(name) { this.name = name return name; } let p = new Person(Tom); 說實(shí)...
摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個(gè)類吧,它里面的車位是一個(gè)類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個(gè)停車場,車輛入場時(shí),攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計(jì)費(fèi)價(jià)格上面的不...
閱讀 1835·2021-11-25 09:43
閱讀 1344·2021-11-22 15:08
閱讀 3746·2021-11-22 09:34
閱讀 3228·2021-09-04 16:40
閱讀 3027·2021-09-04 16:40
閱讀 546·2019-08-30 15:54
閱讀 1338·2019-08-29 17:19
閱讀 1755·2019-08-28 18:13