1.首先我们来了解什么是异常呢?

     异常阻止当前方法或作用域继续执行的问题。

2.处理异常

   说到处理异常,我们当然会想到 try catch finally

   在java中我们会对异常的处理有更高的认识 我们会学习 throw throws等更好的处理异常

3.常见异常

  

4.throw关键字:语句抛出异常   throws关键字:声明异常(方法抛出一个异常)

    01.throw   是语句抛出一个异常。

语法:throw (异常对象);
         throw e;

    02. throws  是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)   调用者必须做出处理(捕获或继续抛出)

扫描二维码关注公众号,回复: 2460097 查看本文章

语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
            public void doA(int a) throws Exception1,Exception3{......}

    03.throws可以单独使用,但throw不能, throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使 用,然后再由处理异常的方法捕获。

    04.throw语句用在方法体内,表示抛出异常,由方法体内的语句处理 
         throws语句用在方法声明后面,表示再抛出异常,由调用这个方法的上一级方法中的语句来处理,必须做出处理(捕获或继续声明)

    05.throws主要是声明这个方法会抛出这种类型的异常,使其他地方调用它时知道要捕获这个异常,使得提醒必须做出处理。否则编译是不会通过的。
         throw是具体向外抛异常的动作,所以它是抛出一个异常实例。

eg:

复制代码
public void dothing(int a,int b) throws Exception1,Exception3 {
           try{
                 //......

           }catch(Exception1 e){
              throw e;
           }catch(Exception2 e){
              System.out.println("自己打印提示,不抛出");
           }
           if(a!=b)
              throw new  Exception3("自定义异常");
}
复制代码

代码块中可能会产生3个异常,(Exception1,Exception2,Exception3)。
如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。
如果产生Exception2异常,则该方法自己处理了(即打印出字符串:自己打印提示,不抛出)。所以该方法就不会再向外抛出Exception2异常了,void dothing() throws Exception1,Exception3 里面的Exception2也就不用写了(当然你写了也不会报错的),throws 就是声明可能抛出的错误,而Exception2 并未做出抛出操作。
而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。