首頁 >Java >java教程 >java中的異常概述

java中的異常概述

王林
王林轉載
2019-11-29 15:18:432574瀏覽

java中的異常概述

一、什麼是異常

異常就是程式運作過程中所出現的不正常現象。

try:把可能發生例外的程式碼包起來,當發生異常時,將例外情況拋出

catch:捕獲異常並處理

finally:不管是否發生異常,都會執行

throw:手動引發一個異常

throws:定義任何被呼叫方法的異常

線上學習影片推薦:java線上影片

二、異常出現的原因

使用者輸入錯誤;

程式碼的錯誤;

環境的因素;

異常機制保證了程式的健全性!

三、異常的分類

NullPointerException

空引用異常

IndexOutOfBoundException

下標越界異常

Error與編``譯環境有關,它是Java執行時間的內部錯誤以及資源耗盡錯誤。很難修復,不期望用戶能修復。

四、取得異常訊息

程式發生異常的時候,程式就直接從try執行到catch語句區塊,不再繼續執行`在這裡。

public class text3 {
    public static void main(String[] args) {
		System.out.println("main开始执行");
		text3 a=new text3();
		a.text();
		System.out.println("main执行结束");
	}
    public void text() {
    	int a;
    	try {
    		 a=2/0;
    		System.out.println(a);
    	}catch(ArithmeticException e){
    		System.out.println("程序发生了异常");
    	}
    }
}

異常捕獲之後程式才不會斷

public class text3 {
    public static void main(String[] args) {
		System.out.println("main开始执行");
		text3 a=new text3();
		a.text();
		System.out.println("main执行结束");
	}
    public void text() {
    	int a;
    	//try {
    		 a=2/0;
    		System.out.println(a);
    	//}catch(ArithmeticException e){
    		//System.out.println("程序发生了异常");
    	//}
    }
}

控制台結果:

java中的異常概述

異常自己不處理但是得聲明一下。

異常宣告:指一個方法不處理它所產生的異常,而是呼叫層次向上傳遞,誰呼叫的這個方法誰來處理。

五、手動拋出異常

throw exception; 參數exception表示要拋出的異常對象,該對像是throwable類的子類,而且只能夠是一個。

public void text1() throws ArithmeticException{
		
	}
	
	public static void main(String[] args) {
		Text t=new Text();
		try {
			t.text();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
		}
	}
	public void text() throws Exception {
		//手动抛出异常
		throw new Exception("这是手动抛出来的");
	}
}

六、try catch finally的嵌套使用

public class Textthrow {
     
public static void main(String[] args) {
	double a=Math.random();
    try {
   	 if(a>0.5) {
   		 System.out.println(a+"程序不报错");
   	 }
   	 else {
   		 throw new Exception();
   	 }
    }catch(Exception e) {
   	 System.out.println("这是外层捕获的对象"+e);
   	 try {
   		 a=1/0;
   	 }catch(ArithmeticException e1) {
   		 System.out.println("这是内层捕获的对象"+e1);
   		 
   	 }finally {
   		 System.out.println("这是内层的finally块");
   	 }
    }finally {
   	 System.out.println("这是外层的finally块 ");
    }
}
}

七、異常鏈


定義:兩個或者多個不同的異常出現在同一個程式中,並且會發生嵌套拋出,我們稱之為異常鏈。

public class ExceptionChainText {
      public static void main(String[] args) {
		Calculator c=new Calculator();
		try {
			c.chufa(1, 0);
		}catch(NumberCalculateExcetption e) {
			e.printStackTrace();
			System.out.println("错误原因"+e);
		}
	}
}
class Calculator{
	public int chufa(int i,int j) throws NumberCalculateExcetption {
		if(j==0) {
			NumberCalculateExcetption e = new
					NumberCalculateExcetption ("计算错误");
			NegativeNumberException e1=	new
					NegativeNumberException("除数不能为0");
		 e.initCause(e1);//由e1引起的异常
		 throw e;
		}
		return 0;
	}
}
class NegativeNumberException extends Exception{
	public NegativeNumberException(String msg) {
		super(msg);
	}
}
class NumberCalculateExcetption extends Exception{
	public NumberCalculateExcetption(String msg) {
		super(msg);
	}
}
相關文章教學推薦:
java入門程式

#######

以上是java中的異常概述的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除