目录
一、异常
异常的概念:
抛出异常:
二、 处理异常
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
三、异常处理运用例题
code演示:
一、异常
异常的概念:
异常是指程序运行过程中发生的一些不正常事件(如除0溢出,数组下标越界,所要读取的文件不存在)
抛出异常:
Java程序的执行过程中如果出现异常事件,可以生成一个异常类对象,该对象封装了异常事件的信息,并将其提交给Java运行系统,这个过程称为抛出异常,不处理的话会直接导致程序中断。
二、 处理异常
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。
在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理。
Java 的异常处理是通过 5 个关键词来实现的:try、catch、throw、throws 和 finally。一般情况下是用 try 来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理;
try 用来指定一块预防所有“异常”的程序;
catch 子句紧跟在 try 块后面,用来指定你想要捕捉的“异常”的类型;
throw 语句用来明确地抛出一个“异常”;
throws 用来标明一个成员函数可能抛出的各种“异常”;
Finally 为确保一段代码不管发生什么“异常”都被执行一段代码;
三、异常处理运用例题
code演示:
题目:
/
编写一个计算N个整数平均值的程序。程序应该提示用户输入N的值,如何必须输入所有N个数。如果用户输入的值是一个负数,则应该抛出一个异常并捕获,提示“N必须是正数或者0”。并提示用户再次输入该数
*/
效果如图:
--------------------------
要计算几个整数的平均值呢:
5
请输入第1个数
50
请输入第2个数
60
请输入第3个数
80
请输入第4个数
90
请输入第5个数
100
一共5个数,和为:380,平均值为:76
----------------------------
要计算几个整数的平均值呢:
3
请输入第1个数
50
请输入第2个数
-15
N必须是正数或者0
请输入第2个数
0
请输入第3个数
-10
N必须是正数或者0
请输入第3个数
60
一共3个数,和为:110,平均值为:36
------------------------------
代码如下:
/*
首先我们需要创建一个异常子类,继承异常父类Exception.构建无参有参方法
*/
public class mathException extends Exception{
public mathException(){}
public mathException(String message){
super(message);
}
}
/*
通过一个测试类,直接创建命令提示要求
*/
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
System.out.println("-----------------------------");
System.out.println("要计算几个整数的平均值呢:");
Scanner sc=new Scanner(System.in);
int i = sc.nextInt();
int sum=0;
int average=0;
for (int j = 0; j < i; j++) {
System.out.println("请输入第"+(j+1)+"个数");
int num=sc.nextInt();
//如果用户输入的值是一个负数,则应该抛出一个异常并捕获,提示“N必须是正数或者0”。并提示用户再次输入该数
if (num<0){
try {
throw new mathException("N必须是正数或者0");
} catch (Exception e) {
e.printStackTrace();
System.out.println("请重新输入第"+(j+1)+"个数");
num=sc.nextInt();
}
}
sum+=num;
}
average=sum/i;
System.out.println("一共"+i+"个数,和为:"+sum+",平均值为:"+average);
System.out.println("-----------------------------");
}
}
创建菜单栏大家应该都会,很简单,而关于异常的捕获并且重新提示命令的位置才是我要大家注意的地方。
请参考如下代码,在上文代码中对应,大家就可以理解了。
//如果用户输入的值是一个负数,则应该抛出一个异常并捕获,提示“N必须是正数或者0”。并提示用户再次输入该数
if (num<0){
try {
throw new mathException("N必须是正数或者0");
} catch (Exception e) {
e.printStackTrace();
System.out.println("请重新输入第"+(j+1)+"个数");
num=sc.nextInt();
}
}
最后,我们来看一下运行结果。
E:\develop\JDK\bin\java.exe "-javaagent:E:\IDEA\IntelliJ IDEA Community Edition 2020.2.2\lib\idea_rt.jar=13715:E:\IDEA\IntelliJ IDEA Community Edition 2020.2.2\bin" -Dfile.encoding=UTF-8 -classpath E:\develop\JDK\jre\lib\charsets.jar;E:\develop\JDK\jre\lib\deploy.jar;E:\develop\JDK\jre\lib\ext\access-bridge-64.jar;E:\develop\JDK\jre\lib\ext\cldrdata.jar;E:\develop\JDK\jre\lib\ext\dnsns.jar;E:\develop\JDK\jre\lib\ext\jaccess.jar;E:\develop\JDK\jre\lib\ext\jfxrt.jar;E:\develop\JDK\jre\lib\ext\localedata.jar;E:\develop\JDK\jre\lib\ext\nashorn.jar;E:\develop\JDK\jre\lib\ext\sunec.jar;E:\develop\JDK\jre\lib\ext\sunjce_provider.jar;E:\develop\JDK\jre\lib\ext\sunmscapi.jar;E:\develop\JDK\jre\lib\ext\sunpkcs11.jar;E:\develop\JDK\jre\lib\ext\zipfs.jar;E:\develop\JDK\jre\lib\javaws.jar;E:\develop\JDK\jre\lib\jce.jar;E:\develop\JDK\jre\lib\jfr.jar;E:\develop\JDK\jre\lib\jfxswt.jar;E:\develop\JDK\jre\lib\jsse.jar;E:\develop\JDK\jre\lib\management-agent.jar;E:\develop\JDK\jre\lib\plugin.jar;E:\develop\JDK\jre\lib\resources.jar;E:\develop\JDK\jre\lib\rt.jar;E:\workplace\out\production\sixth abnormal06.Demo
-----------------------------
要计算几个整数的平均值呢:
5
请输入第1个数
10
请输入第2个数
20
请输入第3个数
-30
abnormal06.mathException: N必须是正数或者0
at abnormal06.Demo.main(Demo.java:22)
请重新输入第3个数
30
请输入第4个数
-40
abnormal06.mathException: N必须是正数或者0
at abnormal06.Demo.main(Demo.java:22)
请重新输入第4个数
40
请输入第5个数
50
一共5个数,和为:150,平均值为:30
-----------------------------
Process finished with exit code 0
好了,以上就是今天给大家分享的小知识了,谢谢大家。