異常
異常的概念

什么是異常?
在程序運行時打斷正常程序流程的任何不正常情況稱為異常
導致程序發生異常的原因很多,如
1.數組的下標越界 2.除法運算的除數為0
3.空指針訪問 4.試圖訪問不存在的文件
java異常處理機制
1.Java語言的異常處理機制為提高Java程序的健壯性提供了良好的支持
? 當產生異常時,Java能夠啟用相應的異常處理程序
?Java中的異常是類,和普通的類沒有本質區別
異常情況舉例
1.編寫程序,從鍵盤上輸入三角形的三條邊長a,b,c,輸出其面積
2.計算面積的海倫公式為
代碼:
public class TestException { public static double calculateArea(double a, double b, double c) { double p = (a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } public static void main(String[ ] args) { double a = Double.parseDouble(args[0]); double b = Double.parseDouble(args[1]); double c = Double.parseDouble(args[2]); double s = calculateArea(a, b, c); System.out.println( "三角形面積是" + s); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
運行命令:java TestException 3.0 4.0 5.0
輸出:三角形面積是6.0
異常情況1
運行命令:java TestException
? 在控制臺將顯示數組訪問越界的錯誤信息:
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0 at TestException.main(TestException.java:10)
1
2
3
? 造成上述異常的原因是:沒有輸入足夠的參數,致
使字符串數組args的長度為0。當訪問第1個參數
args[0] 時,數組訪問會越界。
異常情況2
運行命令:java TestException 3.0 4.b 5.0
? 在控制臺將顯示數字格式異常的錯誤信息:
Exception in thread "main" java.lang.NumberFormatException: For input string: "4.b" …… at TestException.main(TestException.java:11)
1
2
3
4
5
? 造成上述異常的原因是:輸入的第2個字符串參數4.b不
是一個數字文本,無法轉換成所需要的雙精度數字類型
異常情況處理1
public class TestException{ public static double calculateArea(double a, double b, double c){ double p = (a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } public static void main(String[] args){ if (args.length < 3) { System.out.println("輸入的參數個數應至少為3個,請 重新執行本程序"); } double a = Double.parseDouble(args[0]); double b = Double.parseDouble(args[1]); double c = Double.parseDouble(args[2]); double s = calculateArea(a, b, c); System.out.println("三角形面積是"+s); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
異常處理情況2
public class TestException{ public static double calculateArea(double a, double b, double c){ double p = (a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } public static void main(String[] args){ try{ double a = Double.parseDouble(args[0]); double b = Double.parseDouble(args[1]); double c = Double.parseDouble(args[2]); double s = calculateArea(a, b, c); System.out.println("三角形面積是"+s); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("數組訪問越界,請至少輸入3 個參數"); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*; public class TestExceptionnew { public static double calculateArea(double a, double b, double c) { double p = (a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } public static void main(String[] args) { Scanner reader=new Scanner(System.in); double a = reader.nextDouble(); double b = reader.nextDouble(); double c = reader.nextDouble(); double s = calculateArea(a, b, c); System.out.println("三角形面積是"+s); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Java 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。