一:概念
程序中出现的错误,用来封装错误信息的对象。继承结构非常严谨。
我们重点关注Exception。
组成结构:类型、提示、行号
异常的继承结构
Throwable -顶级父类
-Error :系统错误,无法修复
- Exception 可修复错误,如果出现,一定要处理。
--RunTimeException
--- ClassCastException
--- ClassNotFoundException
异常处理有两种:
--捕获异常:把程序中会出现的异常处理掉。语法:try{代码}catch(异常类型 异常名){给出解决方案}
--抛出异常:把程序中出现的异常自己不管,交给调用者去处理。
一:捕获异常
package cn.tedu.demo;
import java.util.Scanner;
public class Test6_Exception {
public static void main(String[] args) {
//进行一场处理
// method();
method2();
}
private static void method2() {
// TODO Auto-generated method stub
try {
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
System.out.println(a/b);
//程序中不仅仅只有几个异常,还有可能出现好多不知名的异常,
//这个时候就可以利用多态,可以将子类当做父类,用父类Exception来讲异常都捕获住。
} catch (Exception e) {//如果有异常,立刻被捕获
// TODO: handle exception
System.out.println("输入错误!");
}
}
private static void method() {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
System.out.println(a/b);
}
}
结果:
二:抛出异常
import java.util.Scanner;
//抛出异常
public class Test7_Exception2 {
//这里是解决方案1:抛出
public static void main(String[] args) throws Exception{
// method();
//这里是解决方案2:解决异常,进行捕获
try {
method2();
//解决方案
//1.抛出异常
//2解决异常,捕获
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("出现错误");
}
}
//抛出异常 在方法的声明上添加throws 异常类型
private static void method2() throws Exception {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
System.out.println(a/b);
}
private static void method() {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
System.out.println(a/b);
}
}
结果: