国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一道面試題引發(fā)的思考:(2)

stefan / 1139人閱讀

摘要:由虛擬機(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

非runtimeException 一般是外部錯(cuò)誤,例如:從文件尾后讀取數(shù)據(jù),這并不是程序本身的錯(cuò)誤,而是應(yīng)用環(huán)境的錯(cuò)誤,凡是繼承Throwable的,都可以捕獲,拋出。

ERROR

Error由虛擬機(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

相關(guān)文章

  • 一道面試引發(fā)思考 --- Event Loop

    摘要:想必面試題刷的多的同學(xué)對下面這道題目不陌生,能夠立即回答出輸出個(gè),可是你真的懂為什么嗎為什么是輸出為什么是輸出個(gè)這兩個(gè)問題在我腦邊縈繞。同步任務(wù)都好理解,一個(gè)執(zhí)行完執(zhí)行下一個(gè)。本文只是我對這道面試題的一點(diǎn)思考,有誤的地方望批評指正。 想必面試題刷的多的同學(xué)對下面這道題目不陌生,能夠立即回答出輸出10個(gè)10,可是你真的懂為什么嗎?為什么是輸出10?為什么是輸出10個(gè)10?這兩個(gè)問題在我腦...

    betacat 評論0 收藏0
  • 一道前端面試引發(fā)思考

    摘要:直接開始題目是厲害了說句實(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)換 先說...

    gaomysion 評論0 收藏0
  • 一道簡單面試引發(fā)思考

    摘要:另一個(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)備投遞...

    wpw 評論0 收藏0
  • 一道面試引發(fā)思考 --- 理解 new 運(yù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í)...

    shengguo 評論0 收藏0
  • 一道面試引發(fā)思考

    摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個(gè)類吧,它里面的車位是一個(gè)類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個(gè)停車場,車輛入場時(shí),攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計(jì)費(fèi)價(jià)格上面的不...

    Apollo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<