异常

网友投稿 484 2022-05-29

异常的概念

什么是异常?

在程序运行时打断正常程序流程的任何不正常情况称为异常

导致程序发生异常的原因很多,如

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小时内删除侵权内容。

上一篇:(openEuler21.03-x86)docker安装开源Spug轻量级自动化运维平台
下一篇:【愚公系列】2022年03月 .NET架构班 020-ABP vNext 虚拟文件系统
相关文章