1.异常的顶级父类:Throwable
--Error:系统错误,通过java无法修复
--Exception:可以修复的错误
--RunTimeException:运行时异常
--IndexOutOfboundsException--数组下标越界
--InputMismatchExecption--输入不匹配异常
--ArithmeticException--算数异常
--ClassCastException :编译期异常
--ClassNotFoundException:
--Unhandled exception: java.lang.Exception未处理的异常
2.异常的处理方式
方案一:自己解决try-catch
try-catch可以嵌套的,如果有多种异常需要分别处理的话
如果不需要特殊处理,只需要处理,那就不需要嵌套
将所有异常的子类同意看作父类型Exception来处理
提供公共的处理方案,这是多态最为经典的处理方案
格式
try{
可能出现的异常代码
}catch(异常类型 异常名称){
处理异常的提示
}
方案二:向上抛出--不自己解决
在方法定义的两个括号之间:throws异常类型1,异常类型2
注意事项:
如果一个方法抛出异常,那么谁调用这个方法,谁就需要处理[捕获/抛出]这个异常
我们一定要在main()调用之前解决掉异常不能把问题抛给main(),以为没人解决
代码的实现------------
package cn.tedu.array;
import java.util.InputMismatchException;
import java.util.Scanner;
public class ExceptionDemo {
public static void main(String[] args){
// f1();//调用暴露异常的方法
//f2();//通过捕获处理的方式提前
//f3();
method();
}
private static void method(){
try {
f3();
}catch (Exception e){
System.out.println("请正确玩游戏");
}
}
//创建一个抛出异常的方法--交给别人解决
//private static void f3()throws ArithmeticException, InputMismatchException,Exception{
private static void f3()throws Exception{
//3.1复写之前的代码
System.out.println("请输入你要计算的一个整数");
int a=new Scanner(System.in).nextInt();
System.out.println("请输入你要输入的第二个整数");
int b=new Scanner(System.in).nextInt();
System.out.println(a/b);
}
//2.创建一个用于捕捉异常的方法
private static void f2() {
try{
System.out.println("请输入你要计算的一个整数");
int a=new Scanner(System.in).nextInt();
System.out.println("请输入你要输入的第二个整数");
int b=new Scanner(System.in).nextInt();
System.out.println(a/b);
}
// catch (ArithmeticException e){
// System.out.println("除数不能为0");
// }
// catch (InputMismatchException e){
// System.out.println("请输入正确的类型");
// }
catch (Exception e){
System.out.println("请输入正确的类型");
}
}
//创建一个f1()用来暴露异常
private static void f1() {
//需求:接受用户输入的两个整数,并打印两个数的结果
System.out.println("请输入你要计算的一个整数");
int a=new Scanner(System.in).nextInt();
System.out.println("请输入你要输入的第二个整数");
int b=new Scanner(System.in).nextInt();
System.out.println(a/b);
//输入6与0,报错:ArithmeticException算数异常,原因除数不能为0
//输入3与4.4,报错:InputMismatchException输入不匹配异常
}
}



