异常
【摘要】
异常的概念
什么是异常? 在程序运行时打断正常程序流程的任何不正常情况称为异常
导致程序发生异常的原因很多,如 1.数组的下标越界 2.除法运算的除数为0 3.空指针访问 4.试图访问不存在的文件
...
异常的概念
什么是异常?
在程序运行时打断正常程序流程的任何不正常情况称为异常
导致程序发生异常的原因很多,如
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
文章来源: blog.csdn.net,作者:静Yu,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_46285118/article/details/113189555
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)