91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java異常處理相關知識點

發布時間:2022-03-02 12:28:41 來源:億速云 閱讀:162 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關java異常處理相關知識點,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    異常概述

    在Java中,這種在程序運行時可能出現的一些錯誤稱為異常。異常是一個在程序執行期間發生的事件,它中斷了正在執行的成宿的正常指令流。 

    視頻筆記: 

     Java程序執行時遇到的異常:

    • java.lang.Error:一般不編寫針對性的代碼進行處理

    • Java.lang.Exception:可以進行異常處理

    • 編譯時異常(checked)運行時異常(unchecked)

    1.Error:java虛擬機無法解決的嚴重問題。如:JVM系統內部錯誤

    2.Exception:其他因編程錯誤或偶然的外在因素導致的一般性問題,可以使用針對性的代碼     進行處理。例如:空指針訪問試圖讀取不存在的文件網絡連接中斷數組角標越界

    下面看最常見的將0做除數的時候 

    public class test {
    	public static void main(String[] args)
    	{
    	int a=3/0;
    	System.out.println(a);
    }
    }

    java異常處理相關知識點

     程序運行的結果報告發生了算數異常ArithmeticException,系統不在執行下去,提前結束。這種情況就是所說的異常。

    public class test {
    	public static void main(String[] args)
    	{
    	main(args);
    }
    }

    java異常處理相關知識點

    棧溢出(main里面還調main(args)) 

    public class test {
    	public static void main(String[] args)
    	{
    	Integer [] a=new Integer[1024*1024*1024];
    }
    }

     堆溢出(OutOfMemoryError)

    java異常處理相關知識點

    書本內容: 

    Java語言是一門面向對象的編程語言,因此異常在Java語言中也是作為類的實例的形式出現的,當某一方法發生錯誤時,這個方法會創建一個對象,并且把它傳遞給正在運行的系統。這個對象就是異常對象。通過異常處理機制,可以將非正常情況下的處理代碼與程序的主邏輯分離,即在編寫代碼主流程的同時在其他地方處理異常。 

    常見異常的舉例  

    空指針異常NullPointerException

    public class test {
    	public static void main(String[] args)
    	{
    	int a[]=null;
    	System.out.println(a[5]);
    }
    }

    java異常處理相關知識點

    數組角標越界異常ArrayIndexOutOfBoundsException 

    public class test {
    	public static void main(String[] args)
    	{
    	int a[]=new int[5];
    	System.out.println(a[5]);
    }
    }

    java異常處理相關知識點

     異常的拋出與捕捉

    為了保證程序有效地執行,需要對拋出的異常進行相應的處理。在Java中,如果某個方法拋出異常,既可以在當前方法中進行捕捉,而后處理該異常,也可以將異常向上拋出,交由方法調用者來處理。

    拋出異常

    異常拋出后,如果不做任何處理,程序就會被終止。

    例如,將一個字符串轉換為整型,可以通過Integer類的parseInt()方法來實現。但如果該字符串不是數字形式,parseInt()方法就會拋出異常,程序將在出現異常的位置終止,不在執行下面語句

    public class test {
    	public static void main(String[] args)
    	{
    String str="abc";
    System.out.println(str);
    int a=Integer.parseInt("20L");
    System.out.println(a);
    }
    }

    java異常處理相關知識點

     NumberFormatException異常,abc以及輸出,只是后面語句自身問題,導致代碼終止

    拋出異常,其后的代碼不執行

    捕捉異常

    Java語言的異常捕獲結構由try,catch,finally3部分組成。其中,try語句塊存放的是可能發生異常的Java語句catch語句塊在try語句塊之后用來激發被捕獲的異常final語句塊是異常結構的最后執行部分無論try語句塊中的代碼如何退出,都將執行finally語句塊

    try{
    //代碼塊
    }
    catch(exception1 e)//(異常類型,變量名)
    {
    //對exception1的處理
    }
    catch(exception2 e)//(異常類型,變量名)
    {
    //對exception2的處理
    }
    finally{
    //代碼塊(一定會執行的代碼)
    }

    模板如上

    public class test {
    	public static void main(String[] args)
    	{
    String str="abc";
    System.out.println(str);
    try {
    int a=Integer.parseInt(str);
    System.out.println("猜猜看");
    		}
    		catch(Exception e)
    		{
    			System.out.println("出現異常啦,不要慌");
    		}
    		System.out.println("你看,都說問題不大啦");
    }
    }

    java異常處理相關知識點

    用e.printStackTrace();語句輸出異常性質后得到

    java異常處理相關知識點

    視頻筆記: 

    • finally是可選的

    • 使用try將可能出現的異常代碼包裝起來,在執行過程中,一旦出現異常,就會生成一個對應異常類的對象,根據此對象的類型,去catch中進行匹配——比如我們上述代碼中的Exception e寫為NumberFormatException e,與其對應

    • 一旦try中的異常對象匹配到某一個catch時,就進入catch中進行異常處理。一旦處理完成,就跳出當前try——catch結構(若此時無finally)。繼續執行其后的代碼

    • catch中的異常類型如果滿足子父類關系,則要求子類一定要聲明在父類的上面。

    • 在try結構中聲明的變量,在出了try結構以后,就不能再被調用

    • 使用該結構處理異常時,編譯時沒有報錯,但是運行時仍有可能報錯,相當于將異常延長到運行時出現;開發中,由于運行時異常比較常見,所以我們通常不針對運行時異常編寫try-catch-finally

    finally語句塊

    一下四種特殊情況下,finally塊不會被執行:

    • 在finally語句塊中發生了異常

    • 在前面的代碼中使用了System.exit()退出程序

    • 程序所在的線程死亡

    • 關閉CPU

    java異常處理相關知識點

    java異常處理相關知識點

     這里對比一下發現第二個圖沒寫finally但沒影響結果的體現

    finally是可選的
    finally中聲明的是一定會被執行的代碼,即使catch中又出現異常了,try中有return語句,catch中有return語句等情況

    在方法中拋出異常

    使用throws關鍵字拋出異常

    throws關鍵字通常被應用在聲明方法時,用來指定方法可能拋出的異常。多個異常可使用逗號分隔。

    public class test {
    	static void p()throws NegativeArraySizeException{
    		//定義方法并拋出NegativeArraySizeException異常
    		int[] a=new int[-4];
    	}
     
    	public static void main(String[] args)
    	{
     
    		try {
    			p();
    		 }
    	catch(NegativeArraySizeException e) {
    		System.out.println("p()方法拋出的異常");
    	  }
    	
    }
    	}

    java異常處理相關知識點

    筆記:如果是Error類,RuntimeException類或他們的子類,可以不使用throws關鍵字來聲明要拋出的異常,編譯仍能順利通過,但在運行時會被系統拋出。 ""

    "throws+異常類型"寫在方法的聲明處。指明此方法執行時,可能會拋出異常類型。一旦當方法體執行時,出現異常,仍會在異常代碼處生成一個異常類的對象,此對象滿足throws后異常類型時,就會被拋出

    使用throw關鍵字拋出異常(自定義異常)

    throw關鍵字通常用于方法體中,并且拋出一個異常對象。程序在執行到throw語句時立即終止,它后面的語句都不執行。通過throw拋出異常后,如果想在上一級代碼中捕獲并處理異常,則需要在拋出異常的方法中使用throws關鍵字在方法的聲明中指明要拋出的異常;如果要捕獲throw拋出的異常,則必須使用try-catch語句塊

    public class test extends Exception {
    	String name;
    	public test(String errorname)
    	{
    		name=errorname;
    	}
    	public String getName()
    	{
    		return name;
    	}		
    }
    public class captor{
    	static int q(int x,int y)throws test{
    		if(y<0)
    		{
    			throw new test("除數不能是負數");
    		}
    		return x/y;
    	}
    	public static void main(String[] args)
    	{
    try {
    	int result=q(3,-1);
    }catch(test e) {
    	System.out.println(e.getName());
    }catch(ArithmeticException e)
    {
    	System.out.println("除數不能為0");
    }catch(Exception e)
    {
    	System.out.println("產生了其他異常");
    }
    }
    }

    java異常處理相關知識點

    異常的使用原則

     Java異常強制用戶去考慮程序的強健性和安全性。異常處理不應來控制程序的正常流程,其主要作用是捕獲程序在運行時發生的異常并進行相應的處理。編寫代碼處理某個方法可能出現的異常時,可遵循一下原則:

    • 在當前方法聲明中使用try-catch語句捕獲異常

    • 一個方法被覆蓋時,覆蓋它的方法必須拋出相同的異常或異常的子類

    • 如果父類拋出多個異常,則覆蓋方法必須拋處那些異常的一個子集,不能拋出新異常

    關于“java異常處理相關知識點”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    四平市| 平和县| 海伦市| 富平县| 富宁县| 邻水| 广安市| 榕江县| 布拖县| 江口县| 高青县| 鸡东县| 抚宁县| 思茅市| 沂水县| 遵化市| 阿拉善左旗| 盐边县| 离岛区| 舟山市| 开封市| 龙口市| 永丰县| 宜阳县| 固阳县| 手机| 皮山县| 榕江县| 石台县| 科技| 富源县| 铜鼓县| 绥中县| 崇州市| 三门峡市| 开阳县| 张家港市| 杭锦后旗| 海淀区| 佛冈县| 临泽县|