异常

举报
静Yu 发表于 2021/11/19 03:14:04 2021/11/19
【摘要】 异常的概念 什么是异常? 在程序运行时打断正常程序流程的任何不正常情况称为异常 导致程序发生异常的原因很多,如 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。