异常的概念
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
异常发生的原因有很多,通常包含以下几大类:
1:用户输入了非法数据。
2:要打开的文件不存在。
3:网络通信时连接中断,或者JVM内存溢出。
异常的类型
处理的流程
异常的分类和类的结构图
异常的处理
捕获异常
import java.util.InputMismatchException;
/**
* 多重catch块。
*/
/**
* 使用try-catch-finally进行异常处理。
*/
//finally无论是否发生异常都会执行
public class Test7 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
try {
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(String.format("%d / %d = %d",
num1, num2, num1/ num2));
} catch (InputMismatchException e) {
System.err.println("被除数和除数必须是整数。");
} catch (ArithmeticException e) {
System.err.println("除数不能为零。");
} catch (Exception e) {
System.err.println("其他未知异常。");
} finally {
System.out.println("感谢使用本程序!");
}
}
}
多重异常的执行规则:
1:排列catch 语句的顺序:先子类后父类
2:发生异常时按顺序逐个匹配
3:只执行第一个与异常类型匹配的catch语句
抛出异常 //建议不要使用,最好将异常进行捕获
声明异常
throws:声明方法可能要抛出的各种异常。
如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
抛出异常
throw:手动抛出异常
实例
public class Person {
private String name = ""; // 姓名
private int age = 0; // 年龄
private String sex = "男"; // 性别
public void setSex(String sex) throws Exception {
if ("男".equals(sex) || "女".equals(sex))
this.sex = sex;
else {
throw new Exception(“性别必须是\"男\"或者\"女\"!");
}
}
}