異常:異常有的是因為用戶錯誤引起,有的是程序錯誤引起的,還有其它一些是因為物理錯誤引起的。
異常處理關(guān)鍵字:try、catch、finally、throw、throws
注意事項:
- 錯誤不是異常,而是脫離程序員控制的問題。
- 所有的異常類是從 java.lang.Exception 類繼承的子類。
- 異常類有兩個主要的子類:IOException 類和 RuntimeException 類。
- Java有很多的內(nèi)置異常類。
異常大致分類:
- 用戶輸入了非法數(shù)據(jù)。
- 要打開的文件不存在。
- 網(wǎng)絡(luò)通信時連接中斷,或者JVM內(nèi)存溢出。
語法:
1
2
3
|
try { //需要監(jiān)聽的代碼塊 } |
1
2
3
4
5
|
catch (異常類型 異常名稱/e){ //對捕獲到try監(jiān)聽到的出錯的代碼塊進行處理 throw 異常名稱/e; //thorw表示拋出異常 throw new 異常類型(“自定義”); } |
1
2
3
4
5
6
|
finally { //finally塊里的語句不管異常是否出現(xiàn),都會被執(zhí)行 } 修飾符 返回值 方法名 () throws 異常類型{ //throws只是用來聲明異常,是否拋出由方法調(diào)用者決定 //代碼塊 } |
代碼例子:(try與catch與finally)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class ExceptionTest { public static void main(String[] args) { Scanner input= new Scanner(System.in); try { //監(jiān)聽代碼塊 int a=input.nextInt(); int b=input.nextInt(); double sum=a/b; System.out.println(sum); } catch (InputMismatchException e){ System.out.println( "只能輸入數(shù)字" ); } catch (ArithmeticException e){ System.out.println( "分母不能為0" ); } catch (Exception e){ //Exception是所有異常的父類 System.out.println( "發(fā)生了其他異常" ); } finally { //不管是否出現(xiàn)異常,finally一定會被執(zhí)行 System.out.println( "程序結(jié)束" ); } } } |
代碼例子:(throw關(guān)鍵字)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.InputMismatchException; import java.util.Scanner; public class ExceptionTest { public static void main(String[] args) { Scanner input= new Scanner(System.in); try { //監(jiān)聽代碼塊 int a=input.nextInt(); int b=input.nextInt(); double sum=a/b; System.out.println(sum); } catch (InputMismatchException e){ //catch(異常類型 異常名稱) System.out.println( "只能輸入數(shù)字" ); throw e; //拋出catch捕捉到的異常 //throw new InputMismatchException(); 同上 } catch (ArithmeticException e){ System.out.println( "分母不能為0" ); throw new ArithmeticException( "分母為0拋出異常" ); //拋出ArithmeticException異常 } catch (Exception e){ //Exception是所有異常的父類 System.out.println( "發(fā)生了其他異常" ); } finally { //不管是否出現(xiàn)異常,finally一定會被執(zhí)行 System.out.println( "程序結(jié)束" ); } } } |
代碼例子:(throws)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public class Throws { int a= 1 ; int b= 0 ; public void out() throws ArithmeticException{ //聲明可能要拋出的異常,可以有多個異常,逗號隔開 try { //監(jiān)聽代碼塊 int sum=a/b; System.out.println(sum); } catch (ArithmeticException e){ System.out.println( "分母不能為0" ); } finally { //不管是否出現(xiàn)異常,finally一定會被執(zhí)行 System.out.println( "程序結(jié)束" ); } } public static void main(String[] args){ Throws t= new Throws(); t.out(); //調(diào)用方法 throw new ArithmeticException( "分母為0拋出異常" ); //由調(diào)用的方法決定是否要拋出異常 /* * 第二種拋出方式 */ // ArithmeticException a=new ArithmeticException("分母為0拋出異常"); // throw a; } } |
原文鏈接:https://www.idaobin.com/archives/609.html