1.异常类大致结构:

2.Throwable是所有异常类的超类.

3.当程序可能出现错误(异常)的时候应该使用,使用关键捕获异常进行处理.

4.捕获异常结构如下:

 1 public void test() {
 2     int num1 = 10;
 3     int num2 = 0;
 4     try {
 5       System.out.println(num1 / num2);                             // try可能出现错误的语句块
 6     } catch (Exception e) {                                         // 异常类型 并实例化一个异常类型e,用来对出现的异常进行说明
 7        e.printStackTrace();                                         // 如果出现错误执行catch里面内容,否则跳过catch语句块
 8     } finally {
 9         System.out.println("永远都会被执行,(system.exit)特殊情况除外,");       // 无论是否出现异常都会执行finally语句块
10     }
11 }            

5.有的函数声明定义的时候直接抛出了异常,name在调用的时候就需要捕获异常或者继续抛出异常.

 1     public static void main(String[] args) {
 2         try {
 3             test();             //调用这个方法就必须捕获异常或者继续抛出异常   
 4         } catch (Exception e) {
 5             e.printStackTrace();
 6         }
 7     }
 8     
 9     //方法定义的时候抛出了异常
10     public static void test() throws Exception {
11         int num1 = 10;
12         int num2 = 0;
13         System.out.println(num1 / num2);             
14     }

 6.自定义异常类,必须继承一个异常的父类:

public class ExceptionTest extends Exception{
    @Override        //这个是注解,表示这是重写的方法
    public void printStackTrace() {
        System.out.println("自己定义的异常类");
        System.out.println("尝试一下如果程序没有出现异常,强制抛出这个自定义异常,可不可以捕获");
    }   
}

7.尝试使用(捕获)自定义的异常类

public class Main {
    public static void main(String[] args) {
        try {
            test();                    //调用这个方法尝试捕获自定义异常
        } catch (ExceptionTest e) {
            e.printStackTrace();    //自定义的异常类重写了printStackTrace这个方法
        }
    }
     //继续往上抛出异常
    public static void test() throws ExceptionTest{
        throw new ExceptionTest(); //强制产生一个自定义的异常并往上抛
    }   
}