日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JAVA基礎--如何通過異常處理錯誤

瀏覽:8日期:2022-08-31 14:18:18

《Thinking in Java》上對這章的講解不少,可見重要性,學習和總結一些主要的記錄下來。

一、創(chuàng)建自定義異常

package Exception; class SimpleException extends Exception{} public class InheritingException{ public void f() throws SimpleException { System.out.println('Throw SimpleException from f()'); throw new SimpleException(); } public static void main(String[] args) { InheritingException sed = new InheritingException(); try { sed.f(); } catch (SimpleException e) { e.printStackTrace(); } } }

輸出:

Throw SimpleException from f()Exception.SimpleExceptionat Exception.InheritingException.f(InheritingException.java:10)at Exception.InheritingException.main(InheritingException.java:19)

throw與throws的區(qū)別與詳情

編譯器創(chuàng)建了默認構造器,它將自動調(diào)用基類的默認構造器。

對異常來說,最重要的部分就是類名,其它也沒用,可以增加一個帶參的構造方法。

比如NullPointerException:

public class NullPointerException extends RuntimeException { private static final long serialVersionUID = 5162710183389028792L; /** * Constructs a {@code NullPointerException} with no detail message. */ public NullPointerException() { super(); } /** * Constructs a {@code NullPointerException} with the specified * detail message. * * @param s the detail message. */ public NullPointerException(String s) { super(s); } }二、捕獲異常

1)try塊

如果在方法內(nèi)部拋出了異常(或者在方法內(nèi)部調(diào)用的其他方法拋出了異常),這個方法將在拋出異常的過程中結束。

要是不希望方法就此結束,可以在方法內(nèi)設置一個特殊的塊來捕獲異常。

try{ //exceptions }

2)異常處理程序

異常處理程序緊跟在try塊之后,以關鍵字catch表示:

try{ //exceptions } catch(Type1 id1) { //Type1 } catch(Type2 id2) { //Type2}

當異常被拋出時,異常處理機制將負責搜尋參數(shù)與異常類型相匹配的第一個處理程序。然后進入catch子句執(zhí)行,此時認為異常得到了處理。

注意,只有匹配的catch子句才能得到執(zhí)行,這與switch語句不同。

3)棧軌跡

printStackTrace()方法所提供的信息可以通過getStackTrace()方法來直接訪問,這個方法將返回一個由棧軌跡中的元素所構成的數(shù)組,其中每一個元素都表示

棧中的一幀。元素0是棧頂元素,并且是調(diào)用序列中的最后一個方法調(diào)用。數(shù)組中最后一個元素和棧底是調(diào)用序列中的第一個方法調(diào)用。

public class WhoCalled { static void f() { try { throw new Exception(); } catch (Exception e) { for(StackTraceElement ste : e.getStackTrace()) { System.out.println('line: ' + ste.getLineNumber() + ' method: ' + ste.getMethodName()); } } } static void g() {f();} static void h() {g();} public static void main(String[] args) {f();g();h();} }

程序輸出:

line: 5 method: fline: 14 method: mainline: 5 method: fline: 12 method: gline: 14 method: mainline: 5 method: fline: 12 method: gline: 13 method: hline: 14 method: main

三、Java標準異常

Throwable這個Java類被用來表示任何可以作為異常被拋出的類。

Throwable對象可分為兩種類型:

1 Error用來表示編譯時和系統(tǒng)錯誤。

2 Exception是可以被拋出的基本類型,程序員關心的基類型通常是Exception。

四、RuntimeException

if(t == null) { throw new NullPointerException(); }

如果對Null引用進行調(diào)用,Java會自動拋出NullPointerException異常,所以上述代碼是多余的,它屬于Java的標準運行時檢測的一部分:

public class NeverCaught { static void f() { throw new RuntimeException(); } static void g() {f();} public static void main(String[] args) { g(); } }

輸出:

Exception in thread 'main' java.lang.RuntimeException

at Exception.NeverCaught.f(NeverCaught.java:6)

at Exception.NeverCaught.g(NeverCaught.java:10)

at Exception.NeverCaught.main(NeverCaught.java:14)

從輸出可以發(fā)現(xiàn),RuntimeException是一個特例,對于這種異常類型,編譯器不需要異常說明,其輸出被報告給了System.err。

如果RuntimeException沒有被捕獲而直達main(),那么在程序退出前將調(diào)用異常的printStackTrace()方法。

*注意:

只能在代碼中忽略RuntimeException(及其子類)類型的異常,其它異常類型的處理都是由編譯器強制實施的。

1)常見的五種RuntimeException

NullPointerException - 空指針引用異常

ClassCastException - 類型強制轉換異常

IllegalArgumentException - 傳遞非法參數(shù)異常

ArithmeticException - 算術運算異常

ArrayStoreException - 向數(shù)組中存放與聲明類型不兼容對象異常

IndexOutOfBoundsException - 下標越界異常

NegativeArraySizeException - 創(chuàng)建一個大小為負數(shù)的數(shù)組錯誤異常

NumberFormatException - 數(shù)字格式異常

SecurityException - 安全異常

UnsupportedOperationException - 不支持的操作異常

五、使用finally進行清理

class ThreeException extends Exception {} public class FinallyWorks { static int count = 0; public static void main(String[] args) { while(true) { try { if(count++ == 0) { throw new ThreeException(); } System.out.println('No exception'); } catch (ThreeException e) { System.out.println('ThreeException'); } finally { System.out.println('In finally clause'); if(count == 2) break; } } } }

這個程序給了我們一些思路(確實。。),如果把try塊放在循環(huán)里,就建立了一個“程序繼續(xù)執(zhí)行之前必須要到達”的條件。

還可以加入一個static類型的計數(shù)器或者別的裝置,使循環(huán)在放棄之前能夠嘗試一定的次數(shù)。這將使程序的健壯性更上一個臺階(好叼的樣子)。

1)finally用來做什么

當要把除內(nèi)存之外的資源恢復到它們的初始狀態(tài)時,就要用到finally子句。

2)在return中使用finally

因為finally子句總是會執(zhí)行的,所以在一個方法中,可以從多個點返回,并且可以保證重要的清理工作仍舊會執(zhí)行:

class ThreeException extends Exception {} public class FinallyWorks { static int count = 0; public static void main(String[] args) { while(true) { try { if(count++ == 0) { throw new ThreeException(); } System.out.println('No exception'); return; } catch (ThreeException e) { System.out.println('ThreeException'); } finally { System.out.println('In finally clause'); if(count == 3) break; } } } }

第一次循環(huán),首先執(zhí)行第7行,符合條件,拋出異常,執(zhí)行catch塊,最后執(zhí)行finally清理,不符合第16行判斷,繼續(xù)循環(huán)

第二次循環(huán),不符合第7行判斷,拋出異常,并return,但依舊執(zhí)行finally清理,不符合第16行判斷,但try塊中已經(jīng)執(zhí)行return,所以程序結束,輸出:

ThreeExceptionIn finally clauseNo exceptionIn finally clause

3)Java異常的缺憾:異常丟失

public class ExceptionSilencer { public static void main(String[] args) { try { throw new RuntimeException(); } finally { return; } } }

以上就是JAVA基礎--如何通過異常處理錯誤的詳細內(nèi)容,更多關于JAVA 通過異常處理錯誤的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美精品1区| 日韩国产一区二区| 亚洲在线免费| 亚欧成人精品| 精品一区二区三区亚洲| 99久久亚洲精品| 日韩黄色在线观看| 高清一区二区三区| 亚洲一区二区免费看| 国产精品黄色片| 伊人精品一区| 日韩精品欧美精品| 久久精品一区二区国产| 91精品1区| 国产精品欧美日韩一区| 久久一区二区三区喷水| 日本精品国产| 色偷偷色偷偷色偷偷在线视频| 日韩在线观看一区二区| 久久男人av| 免费成人在线影院| 中文字幕成在线观看| 在线观看一区| 成人国产精选| 免费国产亚洲视频| 亚洲女同av| 日本欧美久久久久免费播放网| 精精国产xxxx视频在线播放| 日韩精品一区二区三区中文在线 | 日本va欧美va瓶| av中文资源在线资源免费观看| 蜜桃免费网站一区二区三区| 日韩1区2区| 日韩激情一二三区| 激情综合网站| 久久精品国产久精国产| 亚洲欧美在线专区| 欧美一区三区| 精品网站aaa| 日本中文字幕一区二区| 国产91久久精品一区二区| 国产精品一区二区av日韩在线| 99综合视频| 亚洲欧洲美洲av| 国产欧美一区二区精品久久久| 亚洲国产成人精品女人| 加勒比视频一区| 日本va欧美va精品发布| 在线视频免费在线观看一区二区| 国产精品九九| 日本在线视频一区二区| 午夜电影亚洲| av高清一区| 成人台湾亚洲精品一区二区| 欧美亚洲免费| 在线观看亚洲精品福利片| 136国产福利精品导航网址| 精品国产一区二| 青草av.久久免费一区| 最新日韩av| 久久国产电影| 岛国av在线播放| 麻豆国产91在线播放| 亚洲精品激情| 日韩专区一卡二卡| 免费欧美一区| 成人午夜国产| 日本不良网站在线观看| 欧美成人精品午夜一区二区| 日韩av黄色在线| 天堂av一区| 亚洲一区二区动漫| 亚洲网站视频| 久久一区二区三区电影| 成人国产精品一区二区免费麻豆| 国产精品久久久久久久久久久久久久久| 免费观看在线色综合| 欧美日韩国产在线观看网站| 日韩欧美视频专区| av资源中文在线| 精品国产亚洲一区二区三区| 欧美日韩中文| 青青草伊人久久| 日本在线不卡视频一二三区| 综合激情一区| 玖玖精品视频| 午夜久久tv| 极品日韩av| 亚洲精品a级片| 亚洲激情另类| 中国女人久久久| 午夜欧美在线| 不卡在线一区| 午夜久久黄色| 欧美日韩国产高清| 国产精品三上| 美女国产一区| 亚洲影院天堂中文av色| 免费一区二区视频| 午夜亚洲精品| 亚洲伊人精品酒店| 丝袜亚洲精品中文字幕一区| 蜜臀av一区二区在线免费观看| 视频一区中文字幕国产| 欧美中文日韩| 日韩欧美中文字幕在线视频| 日本欧美一区| 国产精品久久久久久av公交车| 久久av超碰| 97精品一区二区| 偷拍精品精品一区二区三区| 久久网站免费观看| 在线亚洲精品| 中文字幕一区二区三区四区久久| 亚洲精品观看| 日韩激情网站| 久久狠狠久久| 精品欠久久久中文字幕加勒比| 欧美精品导航| 久久男人av资源站| 亚洲高清毛片| 男女性色大片免费观看一区二区| 日韩精品一区二区三区中文在线 | 国产一区一一区高清不卡| av中文字幕在线观看第一页| 日韩在线综合| 欧美日韩精品一本二本三本| 爽好多水快深点欧美视频| 91精品在线免费视频| 欧美激情aⅴ一区二区三区| 国产中文欧美日韩在线| 九色porny丨国产首页在线| 尤物在线精品| 日韩超碰人人爽人人做人人添| 精品国产午夜肉伦伦影院| 欧美一区二区性| 天海翼精品一区二区三区| 久久av中文| 一本一道久久a久久精品蜜桃| 亚洲精品动态| 精品国产99| 99精品99| 国产精品一二| 免费高潮视频95在线观看网站| 9色国产精品| 天堂va在线高清一区| 精品久久精品| av亚洲在线观看| 91大神在线观看线路一区| av中文资源在线资源免费观看| 韩日一区二区三区| 日韩精品视频在线看| 成人精品久久| 蜜桃久久久久久| 高清av一区| 视频一区二区三区中文字幕| 久久99精品久久久野外观看| 激情久久五月| 国产精品久久久久久久久久齐齐 | 日韩在线视频一区二区三区| 国内自拍视频一区二区三区| 性欧美精品高清| 久久精品理论片| 奶水喷射视频一区| 色婷婷综合网| 日本中文字幕一区二区| 日韩成人综合| 91福利精品在线观看| 99久久久久久中文字幕一区| 久久国内精品自在自线400部| 欧美三区四区| 日本aⅴ免费视频一区二区三区| 欧洲在线一区| 美腿丝袜在线亚洲一区| 国产亚洲网站| 三上亚洲一区二区| 日韩久久99| 狠狠久久婷婷| 国产不卡精品| 午夜视频一区二区在线观看| 91精品国产调教在线观看| 国产欧美88| 爽好久久久欧美精品| 日韩黄色大片| 国产精品久久免费视频| 99亚洲精品| 日韩大片在线| 国产精品一二| 在线免费观看亚洲| 久久蜜桃资源一区二区老牛| 国产三级精品三级在线观看国产| 女人天堂亚洲aⅴ在线观看| 97精品国产| 国产精品九九| 日本一不卡视频| 亚洲欧美激情诱惑| 色爱av综合网| 国产一区二区三区探花| 日韩欧美四区| 伊人国产精品|