一、异常
1.2、异常的继承结构
.
.
1.2、异常的处理方式
try{
可能发生异常的代码;
}catch(异常类型 异常名){
处理的方案;
}catch(异常类型 异常名){
处理的方案;
}
2、throws Exception
1.3、异常测试
package cn.tedu.Exception;
/*本类用作异常的入门案例*/
/*1.不要害怕BUG,真正的勇士敢于直面自己写的BUG
2.学会看报错的信息,确定自己的报错方向
3.学会看报错的行号信息,确定自己报错的位置,哪里不对点哪里
注意:源码不会错,要看自己写的代码
* */
import java.util.InputMismatchException;
import java.util.Scanner;
/*如果一个方法抛出了异常,那么谁来调用这个方法,谁就需要处理这个异常
* 这里的处理已有两种方案:捕获解决和继续向上抛出
* 但是注意:我们一般会在main()调用之前解决异常
* */
public class ExceptionDemo {
public static void main(String[] args) throws Exception {
//f2();//捕获异常的方法
//f3();
method();
}
private static void method() {
try {
f3();
} catch (Exception e) {
System.out.println("请正确玩游戏");
}
}
/*异常抛出的格式:在小括号与大括号之间写:throws 异常类型
* 如果有多个异常,使用逗号分隔即可
* */
private static void f3() throws Exception {
f1();
}
/*异常捕获处理的格式:
try{
可能会出现的异常代码
}catch(异常类型 异常名){
如果捕获到了异常进行处理的解决方案
}
* */
/*try-catch可以嵌套的,如果有多种异常类型需要分别处理的话
如果不需要特殊处理,就不需要嵌套
将所有异常的子类型统一看做父类型Exception来处理
提供通用的解决方案,这是多态最为经典的一种用法
* */
private static void f2() {
try{
f1();
}catch (ArithmeticException e){
System.out.println("除数不能为0");
f2();
}catch (InputMismatchException e){
System.out.println("请输入整数");
f2();
}catch (Exception e){
System.out.println("请输入正确的数据!");
f2();
}
}
private static void f1() {
System.out.println("请输入第一个整数:");
int n1=new Scanner(System.in).nextInt();
System.out.println("请输入第二个整数:");
int n2=new Scanner(System.in).nextInt();
System.out.println("n1/n2:"+n1/n2);
// 输入6/0出现的异常:java.lang.ArithmeticException算数异常,原因:除数不能为0
// 输入3与4.4出现的异常:java.util.InputMismatchException输入不匹配异常,
}
}