异常

简介: 异常的概念

异常的概念


什么是异常?


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


导致程序发生异常的原因


1.数组的下标越界

2.除法运算的除数为0

3.空指针访问

4.试图访问不存在的文件


java异常处理机制


Java语言的异常处理机制为提高Java程序的健壮性提供了良好的支持

♈ 当产生异常时,Java能够启用相应的异常处理程序

♈Java中的异常是类,和普通的类没有本质区别


异常情况举例


1.编写程序,从键盘上输入三角形的三条边长a,b,c,输出其面积

2.计算面积的海伦公式为

image.png

代码:

publicclassTestException{
publicstaticdoublecalculateArea(doublea, doubleb, doublec)
{
doublep= (a+b+c)/2;
returnMath.sqrt(p*(p-a)*(p-b)*(p-c)); }
publicstaticvoidmain(String[ ] args)
{
doublea=Double.parseDouble(args[0]);
doubleb=Double.parseDouble(args[1]);
doublec=Double.parseDouble(args[2]);
doubles=calculateArea(a, b, c);
System.out.println( "三角形面积是"+s);
 }
 }

运行命令:java TestException 3.0 4.0 5.0

输出:三角形面积是6.0


异常情况1

运行命令:java TestException

在控制台将显示数组访问越界的错误信息:

Exceptioninthread“main”java.lang.ArrayIndexOutOfBoundsException: 0atTestException.main(TestException.java:10)

造成上述异常的原因是:没有输入足够的参数,致使字符串数组args的长度为0。当访问第1个参数args[0] 时,数组访问会越界。


异常情况2

运行命令:java TestException 3.0 4.b 5.0

在控制台将显示数字格式异常的错误信息:

Exceptioninthread"main"java.lang.NumberFormatException: Forinputstring: "4.b"……atTestException.main(TestException.java:11)

造成上述异常的原因是:输入的第2个字符串参数4.b不是一个数字文本,无法转换成所需要的双精度数字类型


异常情况处理1


publicclassTestException{
publicstaticdoublecalculateArea(doublea, doubleb, doublec){
doublep= (a+b+c)/2;
returnMath.sqrt(p*(p-a)*(p-b)*(p-c));
 }
publicstaticvoidmain(String[] args){
if (args.length<3)
 {
System.out.println("输入的参数个数应至少为3个,请重新执行本程序"); }
doublea=Double.parseDouble(args[0]);
doubleb=Double.parseDouble(args[1]);
doublec=Double.parseDouble(args[2]);
doubles=calculateArea(a, b, c);
System.out.println("三角形面积是"+s);
 }
}

image.png


异常处理情况2


publicclassTestException{
publicstaticdoublecalculateArea(doublea, doubleb, doublec){
doublep= (a+b+c)/2;
returnMath.sqrt(p*(p-a)*(p-b)*(p-c));
 }
publicstaticvoidmain(String[] args){
try{
doublea=Double.parseDouble(args[0]);
doubleb=Double.parseDouble(args[1]);
doublec=Double.parseDouble(args[2]);
doubles=calculateArea(a, b, c);
System.out.println("三角形面积是"+s);
 }catch(ArrayIndexOutOfBoundsExceptione){
System.out.println("数组访问越界,请至少输入3个参数"); }
 }
}
importjava.util.*;
publicclassTestExceptionnew{
publicstaticdoublecalculateArea(doublea, doubleb, doublec)
 {
doublep= (a+b+c)/2;
returnMath.sqrt(p*(p-a)*(p-b)*(p-c));
 }
publicstaticvoidmain(String[] args)
 {
Scannerreader=newScanner(System.in);
doublea=reader.nextDouble();
doubleb=reader.nextDouble();
doublec=reader.nextDouble();
doubles=calculateArea(a, b, c);
System.out.println("三角形面积是"+s);
 }
}


image.png

目录
相关文章
|
6月前
|
运维 编译器 C语言
异常(C++)
异常(C++)
42 1
|
3月前
|
C++
C++中的异常
C++中的异常
|
8月前
|
存储 算法 Java
异常
异常
75 0
|
9月前
|
安全 Java 程序员
c++异常
c++异常
62 0
|
6月前
|
安全 程序员 C语言
|
6月前
|
安全 Java 程序员
|
7月前
|
存储 监控 Java
认识异常【超详细】
认识异常【超详细】
27 0
|
10月前
|
安全 Java C语言
【C++】异常,你了解了吗?(二)
在之前的C语言处理错误时,会通过assert和错误码的方式来解决,这导致了发生错误就会直接把程序关闭,或者当调用链较长时,就会一层一层的去确定错误码,降低效率,所以c++针对处理错误,出现了异常,一起来学习!
53 0
|
11月前
一日一技:不使用 try...except 掩盖一些已知异常
一日一技:不使用 try...except 掩盖一些已知异常
45 0