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

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

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

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

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

一、創建自定義異常

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的區別與詳情

編譯器創建了默認構造器,它將自動調用基類的默認構造器。

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

比如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塊

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

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

try{ //exceptions }

2)異常處理程序

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

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

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

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

3)棧軌跡

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

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

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用來表示編譯時和系統錯誤。

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

四、RuntimeException

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

如果對Null引用進行調用,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)

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

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

*注意:

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

1)常見的五種RuntimeException

NullPointerException - 空指針引用異常

ClassCastException - 類型強制轉換異常

IllegalArgumentException - 傳遞非法參數異常

ArithmeticException - 算術運算異常

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

IndexOutOfBoundsException - 下標越界異常

NegativeArraySizeException - 創建一個大小為負數的數組錯誤異常

NumberFormatException - 數字格式異常

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塊放在循環里,就建立了一個“程序繼續執行之前必須要到達”的條件。

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

1)finally用來做什么

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

2)在return中使用finally

因為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'); return; } catch (ThreeException e) { System.out.println('ThreeException'); } finally { System.out.println('In finally clause'); if(count == 3) break; } } } }

第一次循環,首先執行第7行,符合條件,拋出異常,執行catch塊,最后執行finally清理,不符合第16行判斷,繼續循環

第二次循環,不符合第7行判斷,拋出異常,并return,但依舊執行finally清理,不符合第16行判斷,但try塊中已經執行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基礎--如何通過異常處理錯誤的詳細內容,更多關于JAVA 通過異常處理錯誤的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国内一区二区三区| 成人污污视频| 亚洲一区资源| 日本国产欧美| 国产精品日韩久久久| 日韩高清不卡| 国产精品欧美三级在线观看| 欧美成人国产| 免费人成黄页网站在线一区二区| 久久国产小视频| 国产不卡一区| 女生影院久久| 亚洲黄色网址| 成人久久一区| 在线视频观看日韩| 91精品国产成人观看| 色婷婷久久久| 伊人影院久久| 亚洲开心激情| 久久成人国产| 亚洲尤物av| 欧美一区在线观看视频| 国产精品最新| 日韩成人精品一区| 欧美羞羞视频| 狠狠爱www人成狠狠爱综合网| 久久亚洲影院| 亚洲69av| 久久不见久久见中文字幕免费 | 免费久久99精品国产自在现线| 亚洲少妇一区| 亚洲综合三区| 911亚洲精品| 精品久久国产一区| 欧美日韩精品在线一区| 中文日韩在线| 亚久久调教视频| 国产九九精品| 欧洲一区二区三区精品| 野花国产精品入口| 日本天堂一区| 国产va在线视频| 91久久久久| 国产欧美另类| 日韩一区电影| 老牛影视一区二区三区| 日本不卡一区二区三区| 国产中文字幕一区二区三区| 在线成人动漫av| 日韩精选在线| 国产精品不卡| 午夜在线观看免费一区| 麻豆国产欧美一区二区三区 | 日韩激情一区| 老牛国产精品一区的观看方式| 88久久精品| 一区在线观看| 亚洲精品欧美| 九九色在线视频| 国产精品久久观看| 国产精品久一| 国产精品66| 日本伊人午夜精品| 亚洲欧美日韩精品一区二区| 伊人久久婷婷| 在线日韩av| 国产视频久久| 在线日韩中文| 岛国av在线网站| 在线视频精品| 久久国产三级精品| 亚洲成人精品| 久久国产三级| 亚洲最新无码中文字幕久久| 亚洲欧美日韩国产一区| 国产精品宾馆| aⅴ色国产欧美| 久久只有精品| 亚洲一区日韩在线| 色爱综合网欧美| 中文一区一区三区免费在线观| 久久国产三级精品| 鲁大师成人一区二区三区| 精品少妇一区| 伊人久久高清| 欧美激情福利| 国产精品久久久免费| 亚洲精品黄色| 欧美一区二区三区久久精品| 日韩精品成人| 日韩在线二区| 999久久久国产精品| 国产精品社区| 国产精品欧美大片| 国产黄大片在线观看| 亚洲精品国模| 国产亚洲精品美女久久 | 欧美成人国产| 免费久久精品| 久久亚洲不卡| 国产99久久久国产精品成人免费| 四虎国产精品免费久久| 亚洲韩日在线| 欧美国产一级| 国产私拍福利精品视频二区| 性欧美长视频| 亚洲国内精品| 久久免费大视频| 国产中文欧美日韩在线 | av免费不卡国产观看| 日韩欧美激情电影| 电影天堂国产精品| 免费日韩成人| 亚洲啊v在线免费视频| 久久亚洲国产精品一区二区| 999精品色在线播放| 理论片午夜视频在线观看| 国产日产高清欧美一区二区三区| 午夜亚洲福利| 蜜臀久久99精品久久久久久9| 99精品电影| av亚洲一区二区三区| 麻豆精品视频在线观看免费| 色综合视频一区二区三区日韩 | 日韩一区二区在线免费| 久久久久观看| 麻豆视频观看网址久久| 久久国产三级| 国产精品欧美大片| 国产欧美二区| 国产亚洲精aa在线看| 国产色99精品9i| 日韩不卡一区二区三区| 蜜臀久久久久久久| 夜久久久久久| 日韩精品一二三四| 久久高清国产| 1024精品久久久久久久久| 香蕉精品久久| 欧美成人精品| 午夜国产欧美理论在线播放| 亚洲国产一区二区三区在线播放 | 在线看片日韩| 婷婷亚洲成人| 国产欧美三级| 精品美女在线视频| 日韩亚洲一区在线| 亚洲激情久久| 亚洲精品高潮| 国产精品久久久免费| 欧美日韩一区二区三区不卡视频| 国产一区二区亚洲| 91精品久久久久久久久久不卡| 精品一区亚洲| 日韩精品视频一区二区三区| 国产亚洲精品美女久久 | 国产欧美成人| 国产不卡一区| 日韩中文字幕亚洲一区二区va在线 | 国产精品成人3p一区二区三区| 国产成人久久精品麻豆二区 | 久久精品亚洲欧美日韩精品中文字幕| 精品亚洲美女网站| 精品高清久久| 久久精品观看| 亚洲欧美日本国产| 午夜一级久久| 色婷婷精品视频| 精品国产一区二区三区2021| 国产成人精选| 日韩欧美精品| 久久高清一区| 午夜日韩av| 石原莉奈一区二区三区在线观看| 鲁大师精品99久久久| 日韩av免费大片| 香蕉国产精品| 国产精品.xx视频.xxtv| 久久亚洲成人| 亚洲日本在线观看视频| 美日韩一区二区三区| 欧美日韩一区二区高清| 日韩一区亚洲二区| 亚洲国产日韩欧美在线| 国产欧美一区二区三区精品观看| 国产一区二区三区亚洲| 中文字幕亚洲影视| 丝袜a∨在线一区二区三区不卡| 91免费精品国偷自产在线在线| 国产精品99久久免费观看| 蜜桃成人精品| 天堂成人免费av电影一区| 免费视频一区二区| 日韩视频1区| av资源亚洲| 在线亚洲免费| 另类欧美日韩国产在线| 亚洲成人国产| 蜜桃视频在线观看一区| 中文字幕亚洲在线观看|