日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java学习笔记16--异常

發布時間:2025/3/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java学习笔记16--异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java學習筆記16--異常

異常

異常時導致程序中斷運行的一種指令流,如果不對異常進行正確的處理,則可能導致程序的中斷執行,造成不必要的損失,

所以在程序的設計中必須要考慮各種異常的發生,并正確的做好相應的處理,這樣才能保證程序正常的執行。

?

異常類的繼承結構

在整個java的異常結構中,實際上有以下兩個最常用的類:Exception、Error,這兩個類全都是Throwable的子類

Exception:一般表示的是程序中出現的問題,可以直接使用try...catch處理。

Error:一般指的是JVM錯誤,程序中無法處理。

自定義異常類

只需要繼承Exception就可以完成自定義異常類。因為在java中提供的都是標準的異常類(包括一些異常信息等等)

如果需要定義自己想要的異常信息的時候就可以自定義異常類。

[java] view plaincopy
  • package?com.itmyhome;??
  • ??
  • import?java.util.Scanner;??
  • ??
  • class?MyException?extends?Exception?{?//?自定義異常類??
  • ??????
  • ????public?MyException(String?name)?{??
  • ????????super(name);??????????????????//?調用父類構造??
  • ????}??
  • }??
  • ??
  • public?class?T3?{??
  • ??
  • ????/**?
  • ?????*?@param?args?
  • ?????*/??
  • ????public?static?void?main(String[]?args)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????Scanner?scan?=?new?Scanner(System.in);??
  • ????????System.out.print("請輸入除數:");??
  • ????????int?i?=?scan.nextInt();??
  • ????????System.out.print("請輸入被除數:");??
  • ????????int?j?=?scan.nextInt();??
  • ????????try?{??
  • ????????????if?(j?==?0)?{??
  • ????????????????throw?new?MyException("被除數不能為0");?//?拋出自定義異常??
  • ????????????}?else?{??
  • ????????????????System.out.println(i?/?j);??
  • ????????????}??
  • ????????}?catch?(Exception?e)?{??
  • ????????????e.printStackTrace();??
  • ????????}?finally?{??
  • ??
  • ????????}??
  • ????}??
  • }??

  • ?

    幾個常見的面試題:

    1、try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?

    會執行,在return之前。

    下面看兩個例子

    [java] view plaincopy
  • public?class?T?{??
  • ??
  • ????public?static?void?main(String[]?args)?{??
  • ????????System.out.println(new?T().test());??
  • ????}??
  • ????static?int?test()?{??
  • ????????int?x?=?1;??
  • ????????try?{??
  • ????????????return?x;??
  • ????????}?finally?{??
  • ????????????++x;??
  • ????????}??
  • ????}??
  • }??
  • 輸出結果返回1

    [java] view plaincopy
  • public?class?T?{??
  • ??
  • ????public?static?void?main(String[]?args)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????System.out.println(test());??
  • ????}??
  • ????public?static?int?test(){??
  • ????????try{??
  • ????????????return?1;??
  • ????????}finally{??
  • ????????????return?2;??
  • ????????}??
  • ????}??
  • }??
  • 輸出結果返回2

    try中的return語句調用的函數先于finally中調用的函數執行,也就是說return語句先執行,finally語句后執行,所以,返回結果為2.

    return并不是讓函數馬上返回,而是return語句執行后,將把返回結果放置進函數棧中,此時函數并不是馬上返回,要要執行

    finally語句后才真正開始返回。

    ?

    2、final,finally,finalize的區別

    final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

    finally是異常處理語句結構的一部分,表示總是執行。

    finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收

    例如關閉文件等。JVM不保證此方法總被調用。

    ?

    3、運行時異常與一般異常有何異同?

    異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。

    java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。

    ?

    4、error和exception有什么區別?

    error表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如內存溢出,不可能指望程序能出來這樣的情況。

    exception表示一種設計或實現問題。

    也就是說,它表示如果程序運行正常,從不會發生的情況。

    ?

    5、寫出最常見的5個runtime exception

    ClassCastException,IndexOutOfBoundsException,NullPointerException,ArithmeticException,IllegalArgumentException

    ?

    6、Java中的異常處理機制的簡單原理和應用

    異常時指java程序運行時(非編譯)所發生的非正常情況或錯誤,java使用面向對象的方式來處理異常,它把程序中發生的每個異常

    也都分別封裝到一個對象來表示的,該對象中包含有異常的信息。

    java對異常進行了分類,不同類型的異常分別用不同的java類表示,所有異常的根類為java.lang.Throwable,Throwable下面又派生了

    兩個子類Error和Exception,Error表示應用程序本身無法克服和恢復的一種嚴重問題,例如,內存溢出和線程死鎖等系統問題。

    Exception表示程序還能夠克服和恢復的問題,其中又分為系統異常和普通異常,系統異常是軟件本身缺陷所導致的問題,也就是軟

    件開發人員考慮不周所導致的問題軟件使用者無法克服和恢復這種問題,但在這種問題下還可以讓軟件系統繼續運行或者讓軟件死

    掉,例如數組越界(ArrayIndexOfOutOfBoundsException)空指針異常(NullPointerException)類轉換異常(ClassCastException)

    普通異常是運行環境的編號或異常所導致的問題,是用戶能夠克服的問題例如,網絡斷線,磁盤空間不足,發生這樣的異常后,程

    序不應該死掉。

    java為系統異常和普通異常提供了不同的解決方案,編譯器強制普通異常必須try...catch處理貨用throws聲明繼續拋給上層調用方法處

    理,所以普通異常也被稱為checked異常,二系統異常可以處理也可以不處理,所以,編譯器不強制用try...catch處理或用throws聲

    明,所以系統異常也被稱為unchecked異常。

    ?

    總結

    以上是生活随笔為你收集整理的java学习笔记16--异常的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。