Java異痴穸瑁總結(jié)

目錄

  • 理解Java異常處理機(jī)制的結(jié)構(gòu)體系,理解Throwable娃闲、Exception/Error的設(shè)計(jì)和分類。
  • 理解Java語(yǔ)言中操作Throwable元素的原則
  • java解惑異常規(guī)范解析
  • 阿里巴巴異常規(guī)范解析
  • 常見面試問(wèn)題

理解Throwable匾浪、Exception/Error的設(shè)計(jì)和分類

結(jié)構(gòu)體系

20190225133301229.png

設(shè)計(jì)原則

  • Exception和Error都是繼承了Throwable類皇帮,在Java中只有Throwable類型的實(shí)例才可以被拋出(throw)或者捕獲(catch),它是異常處理機(jī)制的基本組成類型户矢。
  • Exception和Error體現(xiàn)了Java平臺(tái)設(shè)計(jì)者對(duì)不同異常情況的分類玲献。Exception是程序正常運(yùn)行中,可以預(yù)料的意外情況梯浪,可能并且應(yīng)該被捕獲,進(jìn)行相應(yīng)處理瓢娜。
  • Error是指在正常情況下挂洛,不大可能出現(xiàn)的情況,絕大部分的Error都會(huì)導(dǎo)致程序(比如JVM自身)處于非正常的眠砾、不可恢復(fù)狀態(tài)虏劲。既然是非正常情況,所以不便于也不需要捕獲褒颈,常見的比如OutOfMemoryError之類柒巫,都是Error的子類。
  • Exception又分為可檢查(checked)異常和不檢查(unchecked)異常谷丸,可檢查異常在源代碼里必須顯式地進(jìn)行捕獲處理堡掏,這是編譯期檢查的一部分。前面我介紹的不可查
    的Error刨疼,是Throwable不是Exception蜻懦。
  • 不檢查異常就是所謂的運(yùn)行時(shí)異常裙椭,類似NullPointerException释涛、ArrayIndexOutOfBoundsException之類,通常是可以編碼避免的邏輯錯(cuò)誤扮休,具體根據(jù)需要來(lái)判斷是否需要捕
    獲,并不會(huì)在編譯期強(qiáng)制要求拴鸵。

常見子類

非檢查性異常類:(RuntimeException)

異常 描述
ArithmeticException 當(dāng)出現(xiàn)異常的運(yùn)算條件時(shí)玷坠,拋出此異常。例如劲藐,一個(gè)整數(shù)"除以零"時(shí)侨糟,拋出此類的一個(gè)實(shí)例。
ArrayIndexOutOfBoundsException 用非法索引訪問(wèn)數(shù)組時(shí)拋出的異常瘩燥。如果索引為負(fù)或大于等于數(shù)組大小秕重,則該索引為非法索引。
ArrayStoreException 試圖將錯(cuò)誤類型的對(duì)象存儲(chǔ)到一個(gè)對(duì)象數(shù)組時(shí)拋出的異常厉膀。
ClassCastException 當(dāng)試圖將對(duì)象強(qiáng)制轉(zhuǎn)換為不是實(shí)例的子類時(shí)溶耘,拋出該異常。
IllegalArgumentException 拋出的異常表明向方法傳遞了一個(gè)不合法或不正確的參數(shù)服鹅。
IllegalMonitorStateException 拋出的異常表明某一線程已經(jīng)試圖等待對(duì)象的監(jiān)視器凳兵,或者試圖通知其他正在等待對(duì)象的監(jiān)視器而本身沒(méi)有指定監(jiān)視器的線程。
IllegalStateException 在非法或不適當(dāng)?shù)臅r(shí)間調(diào)用方法時(shí)產(chǎn)生的信號(hào)企软。換句話說(shuō)庐扫,即 Java 環(huán)境或 Java 應(yīng)用程序沒(méi)有處于請(qǐng)求操作所要求的適當(dāng)狀態(tài)下。
IllegalThreadStateException 線程沒(méi)有處于請(qǐng)求操作所要求的適當(dāng)狀態(tài)時(shí)拋出的異常仗哨。
IndexOutOfBoundsException 指示某排序索引(例如對(duì)數(shù)組形庭、字符串或向量的排序)超出范圍時(shí)拋出。
NullPointerException 當(dāng)應(yīng)用程序試圖在需要對(duì)象的地方使用 null 時(shí)厌漂,拋出該異常
NumberFormatException 當(dāng)應(yīng)用程序試圖將字符串轉(zhuǎn)換成一種數(shù)值類型萨醒,但該字符串不能轉(zhuǎn)換為適當(dāng)格式時(shí),拋出該異常苇倡。
SecurityException 由安全管理器拋出的異常富纸,指示存在安全侵犯。
StringIndexOutOfBoundsException 此異常由 String 方法拋出旨椒,指示索引或者為負(fù)晓褪,或者超出字符串的大小。
UnsupportedOperationException 當(dāng)不支持請(qǐng)求的操作時(shí)综慎,拋出該異常涣仿。

檢查性異常類:(IOException)

異常 描述
ClassNotFoundException 應(yīng)用程序試圖加載類時(shí),找不到相應(yīng)的類寥粹,拋出該異常变过。
CloneNotSupportedException 當(dāng)調(diào)用 Object 類中的 clone 方法克隆對(duì)象埃元,但該對(duì)象的類無(wú)法實(shí)現(xiàn) Cloneable 接口時(shí),拋出該異常媚狰。
IllegalAccessException 拒絕訪問(wèn)一個(gè)類的時(shí)候岛杀,拋出該異常。
InstantiationException 當(dāng)試圖使用 Class 類中的 newInstance 方法創(chuàng)建一個(gè)類的實(shí)例崭孤,而指定的類對(duì)象因?yàn)槭且粋€(gè)接口或是一個(gè)抽象類而無(wú)法實(shí)例化時(shí)类嗤,拋出該異常。
InterruptedException 一個(gè)線程被另一個(gè)線程中斷辨宠,拋出該異常遗锣。
NoSuchFieldException 請(qǐng)求的變量不存在
NoSuchMethodException 請(qǐng)求的方法不存在

錯(cuò)誤(Error)

異常 描述
StackOverflowError 遞歸過(guò)深,遞歸沒(méi)有出口嗤形。
OutOfMemoryError JVM空間溢出精偿,創(chuàng)建對(duì)象速度高于GC回收速度。

自定義異常

除了系統(tǒng)定義的各種"異常"之外赋兵,有時(shí)候根據(jù)程序的需要笔咽,開發(fā)人員需要定義自己的"異常",也就是"自定義異常"霹期。"自定義異常"有三個(gè)原則:

自己定義:"自定義異常"需要繼承自Exception類或其子類叶组;
自己拋出:"自定義異常"需要根據(jù)情況自己拋出異常對(duì)象;
自己處理:需要程序自己來(lái)處理"自定義異常情況"历造;
通常來(lái)說(shuō)甩十,自定義異常繼承這兩個(gè)類即可,原則如下:

  • 如果希望寫一個(gè)檢查性異常類吭产,則需要繼承 Exception 類侣监,此類異常必須處理;
  • 如果你想寫一個(gè)運(yùn)行時(shí)異常類垮刹,那么需要繼承 RuntimeException 類达吞,可以不處理;

如果自定義異常繼承了 RuntimeException 荒典,處理起來(lái)會(huì)更簡(jiǎn)單,但是缺乏了 Exception 類的嚴(yán)謹(jǐn):
如果在函數(shù)內(nèi)容拋出該異常吞鸭,函數(shù)上不用聲明寺董,編譯一樣通過(guò);
如果在該函數(shù)上聲明了該異常刻剥,調(diào)用者可以不用運(yùn)行處理遮咖,編譯一樣通過(guò)

異常處理原則

  • try-catch-finally塊
  • throw
  • throws
  • try-with-resources
  • multiple catch

try-cathc-finally

使用 try 和 catch關(guān)鍵字可以捕獲異常,代碼塊放在異吃炻玻可能發(fā)生的地方御吞。
匹配的原則是:如果拋出的異常對(duì)象屬于catch子句的異常類麦箍,或者屬于該異常類的子類,則認(rèn)為生成的異常對(duì)象與catch塊捕獲的異常類型相匹配陶珠。

try-catch體還可以定義一個(gè)finally模塊挟裂,finally模塊通常用于資源的回收。
finally體的特點(diǎn)是不論程序有無(wú)異常產(chǎn)生都能得到執(zhí)行揍诽,所以我們可以把try塊里資源的回收等操作交給它處理(如數(shù)據(jù)庫(kù)連接诀蓉、網(wǎng)絡(luò)連接和磁盤文件),以便保證其內(nèi)容一定能得到執(zhí)行.

注意:只有finally塊執(zhí)行完成之后暑脆,才會(huì)回來(lái)執(zhí)行try或者catch塊中的return或者throw語(yǔ)句渠啤,如果finally中使用了return或者throw等終止方法的語(yǔ)句,則就不會(huì)跳回執(zhí)行添吗,直接停止沥曹。

throws/throw

如果一個(gè)方法沒(méi)有捕獲到一個(gè)檢查性異常,那么該方法必須使用 throws 關(guān)鍵字來(lái)聲明碟联,意為拋出異常給父集妓美。但有一點(diǎn)要明白:必須有一級(jí)代碼需要對(duì)異常進(jìn)行處理,不能一直拋出異常玄帕,最終交給JVM處理部脚,因?yàn)镴VM對(duì)檢查性異常的處理只有一個(gè)方法 – 讓系統(tǒng)掛掉。

再說(shuō)說(shuō)throw/throws的關(guān)系:

  • throws是用在方法的定義處裤纹,用以聲明方法體內(nèi)部可能會(huì)產(chǎn)生的異常類型委刘。如果代碼中其他方法調(diào)用了這樣有異常聲明的方法,必須對(duì)其進(jìn)行處理或者接著拋出鹰椒,堅(jiān)決不能不處理锡移;
  • throw的用法是拋出異常對(duì)象,它本身就是一個(gè)拋出異常的動(dòng)作漆际,通常在方法體內(nèi)進(jìn)行調(diào)用淆珊,通常throw和throws是成對(duì)出現(xiàn)的。

try-catch-resources

在JDK7以前奸汇,Java沒(méi)有自動(dòng)關(guān)閉外部資源的語(yǔ)法特性施符,直到JDK7中新增了try-with-resource語(yǔ)法,才實(shí)現(xiàn)了這一功能擂找。

那什么是try-with-resource呢戳吝?簡(jiǎn)而言之,當(dāng)一個(gè)外部資源的句柄對(duì)象(比如FileInputStream對(duì)象)實(shí)現(xiàn)了AutoCloseable接口贯涎,那么就可以將上面的板式代碼簡(jiǎn)化為如下形式:

public static void main(String[] args) {
    try (FileInputStream inputStream = new FileInputStream(new File("test"))) {
        System.out.println(inputStream.read());
    } catch (IOException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}

將外部資源的句柄對(duì)象的創(chuàng)建放在try關(guān)鍵字后面的括號(hào)中听哭,當(dāng)這個(gè)try-catch代碼塊執(zhí)行完畢后,Java會(huì)確保外部資源的close方法被調(diào)用。

multiple catch

有時(shí)當(dāng)我們調(diào)用一段處理時(shí)陆盘,需要同時(shí)捕獲多個(gè)異常普筹,但是我們對(duì)這些異常處理的代碼是相同的。比如:

try {
  // do something
} catch (AException e) {
  throw new MyException(e);
} catch (BException e) {
  throw new MyException(e);
}

jdk1.7后可以把上述代碼等價(jià)地寫成:

try {
  // do something
} catch (AException | BException e) {
  throw new MyException(e);
}

java解惑異常規(guī)范解析

第57條 只針對(duì)異常的情況才使用異常

第58條 對(duì)可恢復(fù)的情況使用受檢異常隘马,對(duì)編程錯(cuò)誤使用運(yùn)行時(shí)異常

  • 如果期望調(diào)用者能夠適當(dāng)?shù)幕謴?fù)太防,使用受檢異常。
  • 大多數(shù)的運(yùn)行時(shí)異常都表示前提違例(precondition violation)祟霍,如ArrayIndexOutOfBoundsException杏头。
  • 錯(cuò)誤往往被JVM保留用于表示資源不足、約束失敗沸呐,或其他無(wú)法繼續(xù)執(zhí)行的條件醇王。最好不要再實(shí)現(xiàn)任何新的Error子類。

第59條 避免不必要的使用受檢的異常
第60條 優(yōu)先使用標(biāo)準(zhǔn)的異常

  • 常用異常:IllegalArgumentException崭添、IllegalStatusException寓娩、NullPointerException、IndexOutOfBoundsException呼渣、ConcurrentModificationException棘伴、UnsupportedOperationException等。

第61條 拋出與異常相對(duì)于的異常

  • 更高層的實(shí)現(xiàn)應(yīng)該捕獲底層的異常屁置,同時(shí)拋出可以按照高層抽象進(jìn)行解釋的異常焊夸。這種做法被稱為異常轉(zhuǎn)義(exception translation),如AbstractSequentialList類的例子:
     public E get(int index) {
         try {
             return listIterator(index).next();
         } catch (NoSuchElementException exc) {
             throw new IndexOutOfBoundsException("Index: "+index);
         }
     }

  

  • 也可以使用異常鏈(exception chaining)的形式來(lái)進(jìn)行轉(zhuǎn)義蓝角,即將底層的異常作為參數(shù)傳入高層異常阱穗。

第62條 每個(gè)方法拋出的異常都要有文檔

  • 始終要單獨(dú)的聲明受檢異常,并利用Javadoc的@throws標(biāo)記準(zhǔn)確的記錄下拋出異常的每個(gè)條件使鹅。
  • 如果一個(gè)類的許多方法出于同樣的原因而拋出同一個(gè)異常揪阶,在該類的文檔注釋中對(duì)這個(gè)異常建立文檔,是可以接受的患朱。

第63條 在細(xì)節(jié)消息中包含能捕獲失敗的信息
第64條 努力使失敗保持原子性

  • 一般而言鲁僚,失敗的方法調(diào)用應(yīng)該使對(duì)象保持在被調(diào)用之前的狀態(tài)。具有這種屬性的方法被稱為具有失敗原子性(failure atomic)裁厅。
  • 獲得失敗原子性的方法:
    1. 在執(zhí)行操作之前檢查參數(shù)的有效性冰沙。
    2. 調(diào)整計(jì)算處理過(guò)程的順序,是的任何可能會(huì)失敗的計(jì)算部分都在對(duì)象狀態(tài)被修改前發(fā)生执虹。
    3. 編寫一段恢復(fù)代碼(不常用)倦淀。
    4. 在對(duì)象的一份臨時(shí)拷貝上執(zhí)行操作,當(dāng)操作完成后在用臨時(shí)拷貝中的結(jié)果代替對(duì)象的內(nèi)容声畏。

第65條 不要忽略異常

  • 至少,catch塊也應(yīng)該包含一條說(shuō)明,解釋為什么可以忽略這個(gè)異常插龄。

阿里巴巴異常規(guī)范解析

  1. 【強(qiáng)制】不要捕獲 Java 類庫(kù)中定義的繼承自 RuntimeException 的運(yùn)行時(shí)異常類愿棋,如:
    IndexOutOfBoundsException / NullPointerException,這類異常由程序員預(yù)檢查
    來(lái)規(guī)避均牢,保證程序健壯性糠雨。
    正例:if(obj != null) {...}
    反例:try { obj.method() } catch(NullPointerException e){...}
  2. 【強(qiáng)制】異常不要用來(lái)做流程控制,條件控制徘跪,因?yàn)楫惓5奶幚硇时葪l件分支低甘邀。
  3. 【強(qiáng)制】對(duì)大段代碼進(jìn)行 try-catch,這是不負(fù)責(zé)任的表現(xiàn)垮庐。catch 時(shí)請(qǐng)分清穩(wěn)定代碼和非穩(wěn)
    定代碼松邪,穩(wěn)定代碼指的是無(wú)論如何不會(huì)出錯(cuò)的代碼。對(duì)于非穩(wěn)定代碼的 catch 盡可能進(jìn)行區(qū)分
    異常類型哨查,再做對(duì)應(yīng)的異常處理逗抑。
  4. 【強(qiáng)制】捕獲異常是為了處理它,不要捕獲了卻什么都不處理而拋棄之寒亥,如果不想處理它邮府,請(qǐng)
    將該異常拋給它的調(diào)用者。最外層的業(yè)務(wù)使用者溉奕,必須處理異常褂傀,將其轉(zhuǎn)化為用戶可以理解的
    內(nèi)容。
  5. 【強(qiáng)制】有 try 塊放到了事務(wù)代碼中加勤,catch 異常后仙辟,如果需要回滾事務(wù),一定要注意手動(dòng)回
    滾事務(wù)胸竞。
  6. 【強(qiáng)制】finally 塊必須對(duì)資源對(duì)象欺嗤、流對(duì)象進(jìn)行關(guān)閉,有異常也要做 try-catch卫枝。
    說(shuō)明:如果 JDK7煎饼,可以使用 try-with-resources 方式。
  7. 【強(qiáng)制】不能在 finally 塊中使用 return校赤,finally 塊中的 return 返回后方法結(jié)束執(zhí)行吆玖,不
    會(huì)再執(zhí)行 try 塊中的 return 語(yǔ)句。
  8. 【強(qiáng)制】捕獲異常與拋異常马篮,必須是完全匹配沾乘,或者捕獲異常是拋異常的父類。
    說(shuō)明:如果預(yù)期對(duì)方拋的是繡球浑测,實(shí)際接到的是鉛球翅阵,就會(huì)產(chǎn)生意外情況歪玲。
  9. 【推薦】方法的返回值可以為 null,不強(qiáng)制返回空集合掷匠,或者空對(duì)象等滥崩,必須添加注釋充分
    說(shuō)明什么情況下會(huì)返回 null 值。調(diào)用方需要進(jìn)行 null 判斷防止 NPE 問(wèn)題讹语。
    說(shuō)明:本規(guī)約明確防止 NPE 是調(diào)用者的責(zé)任钙皮。即使被調(diào)用方法返回空集合或者空對(duì)象,對(duì)調(diào)用
    者來(lái)說(shuō)顽决,也并非高枕無(wú)憂短条,必須考慮到遠(yuǎn)程調(diào)用失敗,運(yùn)行時(shí)異常等場(chǎng)景返回 null 的情況才菠。
  10. 【推薦】防止 NPE茸时,是程序員的基本修養(yǎng),注意 NPE 產(chǎn)生的場(chǎng)景:
    1) 返回類型為包裝數(shù)據(jù)類型鸠儿,有可能是 null屹蚊,返回 int 值時(shí)注意判空。
    反例:public int f(){ return Integer 對(duì)象}; 如果為 null进每,自動(dòng)解箱拋 NPE汹粤。 2) 數(shù)據(jù)庫(kù)的查詢結(jié)果可能為 null。 3) 集合里的元素即使 isNotEmpty田晚,取出的數(shù)據(jù)元素也可能為 null嘱兼。
    阿里巴巴 Java 開發(fā)手冊(cè)
    ——禁止用于商業(yè)用途,違者必究—— 20 / 34
    4) 遠(yuǎn)程調(diào)用返回對(duì)象贤徒,一律要求進(jìn)行 NPE 判斷芹壕。
    5) 對(duì)于 Session 中獲取的數(shù)據(jù),建議 NPE 檢查接奈,避免空指針踢涌。
    6) 級(jí)聯(lián)調(diào)用 obj.getA().getB().getC();一連串調(diào)用序宦,易產(chǎn)生 NPE睁壁。
  11. 【推薦】在代碼中使用“拋異常”還是“返回錯(cuò)誤碼”互捌,對(duì)于公司外的 http/api 開放接口必須使用“錯(cuò)誤碼”潘明;而應(yīng)用內(nèi)部推薦異常拋出;跨應(yīng)用間 RPC調(diào)用優(yōu)先考慮使用 Result 方式秕噪,封裝 isSuccess钳降、“錯(cuò)誤碼”、“錯(cuò)誤簡(jiǎn)短信息”腌巾。
    說(shuō)明:關(guān)于 RPC 方法返回方式使用 Result 方式的理由:
    1)使用拋異常返回方式遂填,調(diào)用方如果沒(méi)有捕獲到就會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤铲觉。
    2)如果不加棧信息,只是 new 自定義異常城菊,加入自己的理解的 error message备燃,對(duì)于調(diào)用端解決問(wèn)題的幫助不會(huì)太多。如果加了棧信息凌唬,在頻繁調(diào)用出錯(cuò)的情況下,數(shù)據(jù)序列化和傳輸?shù)男阅軗p耗也是問(wèn)題漏麦。
  12. 【推薦】定義時(shí)區(qū)分 unchecked / checked 異常客税,避免直接使用 RuntimeException 拋出,
    更不允許拋出 Exception 或者 Throwable撕贞,應(yīng)使用有業(yè)務(wù)含義的自定義異常更耻。推薦業(yè)界已定義
    過(guò)的自定義異常,如:DAOException / ServiceException 等捏膨。
  13. 【參考】避免出現(xiàn)重復(fù)的代碼(Don’t Repeat Yourself)秧均,即 DRY 原則。
    說(shuō)明:隨意復(fù)制和粘貼代碼号涯,必然會(huì)導(dǎo)致代碼的重復(fù)目胡,在以后需要修改時(shí),需要修改所有的副
    本链快,容易遺漏誉己。必要時(shí)抽取共性方法,或者抽象公共類域蜗,甚至是共用模塊巨双。
    正例:一個(gè)類中有多個(gè) public 方法,都需要進(jìn)行數(shù)行相同的參數(shù)校驗(yàn)操作霉祸,這個(gè)時(shí)候請(qǐng)抽戎邸:
    private boolean checkParam(DTO dto){...}

常見面試問(wèn)題

java中內(nèi)存溢出和內(nèi)存泄漏的區(qū)別

雖然在java中我們不用關(guān)心內(nèi)存的釋放,垃圾回收機(jī)制幫助我們回收不需要的對(duì)象丝蹭,但實(shí)際上不正當(dāng)?shù)牟僮饕矔?huì)產(chǎn)生內(nèi)存問(wèn)題:如慢宗,內(nèi)存溢出、內(nèi)存泄漏半夷。

  • 內(nèi)存溢出:out of memory:簡(jiǎn)單通俗理解就是內(nèi)存不夠用了 婆廊。
  • 內(nèi)存泄漏:leak of memory:
    一個(gè)對(duì)象分配內(nèi)存之后,在使用結(jié)束時(shí)未及時(shí)釋放巫橄,導(dǎo)致一直占用內(nèi)存淘邻,沒(méi)有及時(shí)清理,使實(shí)際可用內(nèi)存減少湘换,就好像內(nèi)存泄漏了一樣宾舅。

NoClassDefFoundError和ClassNotFoundException的區(qū)別

  • ClassNotFoundException: 當(dāng)應(yīng)用程序運(yùn)行的過(guò)程中嘗試使用類加載器去加載Class文件的時(shí)候统阿,如果沒(méi)有在classpath中查找到指定的類,就會(huì)拋出ClassNotFoundException筹我。一般情況下扶平,當(dāng)我們使用Class.forName()或者ClassLoader.loadClass以及使用ClassLoader.findSystemClass()在運(yùn)行時(shí)加載類的時(shí)候,如果類沒(méi)有被找到蔬蕊,那么就會(huì)導(dǎo)致JVM拋出ClassNotFoundException结澄。
  • NoClassDefFoundError:NoClassDefFoundError異常,看命名后綴是一個(gè)Error岸夯。從類繼承層次上看麻献,NoClassDefFoundError是從Error繼承的。和ClassNotFoundException相比猜扮,明顯的一個(gè)區(qū)別是勉吻,NoClassDefFoundError并不需要應(yīng)用程序去關(guān)心catch的問(wèn)題。當(dāng)JVM在加載一個(gè)類的時(shí)候旅赢,如果這個(gè)類在編譯時(shí)是可用的齿桃,但是在運(yùn)行時(shí)找不到這個(gè)類的定義的時(shí)候,JVM就會(huì)拋出一個(gè)NoClassDefFoundError錯(cuò)誤煮盼。比如當(dāng)我們?cè)趎ew一個(gè)類的實(shí)例的時(shí)候短纵,如果在運(yùn)行是類找不到,則會(huì)拋出一個(gè)NoClassDefFoundError的錯(cuò)誤孕似。

資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末养渴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子泛烙,更是在濱河造成了極大的恐慌理卑,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔽氨,死亡現(xiàn)場(chǎng)離奇詭異藐唠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鹉究,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門宇立,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人自赔,你說(shuō)我怎么就攤上這事妈嘹。” “怎么了绍妨?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵润脸,是天一觀的道長(zhǎng)柬脸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)毙驯,這世上最難降的妖魔是什么倒堕? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮爆价,結(jié)果婚禮上垦巴,老公的妹妹穿的比我還像新娘。我一直安慰自己允坚,他們只是感情好魂那,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稠项,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鲜结。 梳的紋絲不亂的頭發(fā)上展运,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音精刷,去河邊找鬼拗胜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛怒允,可吹牛的內(nèi)容都是我干的埂软。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼纫事,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼勘畔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起丽惶,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤炫七,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后钾唬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體万哪,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年抡秆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奕巍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡儒士,死狀恐怖的止,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乍桂,我是刑警寧澤冲杀,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布效床,位于F島的核電站,受9級(jí)特大地震影響权谁,放射性物質(zhì)發(fā)生泄漏剩檀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一旺芽、第九天 我趴在偏房一處隱蔽的房頂上張望沪猴。 院中可真熱鬧,春花似錦采章、人聲如沸运嗜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)担租。三九已至,卻和暖如春抵怎,著一層夾襖步出監(jiān)牢的瞬間奋救,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工反惕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尝艘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓姿染,卻偏偏與公主長(zhǎng)得像背亥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悬赏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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

  • 提示: 幾種常見異常ArithmeticException數(shù)學(xué)算數(shù)錯(cuò)誤異常ArrayIndexOutOfBound...
    孫睿888閱讀 415評(píng)論 0 0
  • 異常 概念 異常是程序運(yùn)行過(guò)程中可能發(fā)生的一類事件厚满。 當(dāng)方法中發(fā)生錯(cuò)誤時(shí)阳距,該方法會(huì)創(chuàng)建一個(gè)對(duì)象——異常對(duì)象——并將...
    FoxLayla閱讀 378評(píng)論 0 0
  • 如圖可以看出所有的異常跟錯(cuò)誤都繼承與Throwable類停忿,也就是說(shuō)所有的異常都是一個(gè)對(duì)象中鼠。 從大體來(lái)分異常為兩塊:...
    john_leventon閱讀 165評(píng)論 0 0
  • 八可婶、深入理解java異常處理機(jī)制 引子try…catch…finally恐怕是大家再熟悉不過(guò)的語(yǔ)句了, 你的答案是...
    壹點(diǎn)零閱讀 1,577評(píng)論 0 0
  • 異常: 是什么?是對(duì)問(wèn)題的描述。將問(wèn)題進(jìn)行對(duì)象的封裝具温。 異常體系: Throwable|--Error|--Exc...
    一畝三分甜閱讀 124評(píng)論 0 1