Throwable异常体系


java请求返回的响应头 java返回错误信息_异常类型

异常体系

 Throwable常用方法

           toString()                返回当前异常对象的完整类名+病态信息。
           getMessage()         返回的是创建Throwable传入的字符串信息。
           printStackTrace()    打印异常的栈信息。

          详见jdk api 1.8 下载地址  

Error错误

         一般是由于jvm或者硬件引发的问题,所以一般不会通过代码去处理错误。

         错误与异常的区分

               如果程序出现了不正常的信息,如果以Error结尾,肯定是一个错误。
               如果是以Exception结尾,肯定是一个异常。

Exception异常

          异常是需要通过代码去处理的。

异常的处理

         方式一:捕获异常

             捕获处理的格式:

try{
                            可能发生异常的代码;
                    }catch(捕获的异常类型 变量名){
                            处理异常的代码....
                    }

             捕获处理的注意事项

                  1. 如果try块中出了异常,经过处理,try-catch块外面的代码可以正常执行。
                  2. 如果try块中出了异常,在try块中异常代码后面的代码不会执行。
                  3. 一个try块后面是可以有多个catch块,也就是一个try块可以捕获多种类型的异常。
                  4. 一个try块可以捕获多种异常,但是捕获的异常类型必须从小到大进行捕获,否则编译报错。

         方式二:抛出处理(throw throws)

              抛出处理的注意事项

编译时异常对象,那么必须要在方法上声明抛出。
                  2. 如果被调用方法声明抛出编译时异常,那么调用者必须要处理异常。
                  3. 如果方法内部抛出了异常对象,那么throw语句后面的代码不会再执行                                                                                            (一个方法遇到了throw关键字,该方法会马上停止执行)。
                  4. 在一种情况下,只能抛出一种类型的异常对象。

               关键字throw与throws比较

                  1. throw关键字用于方法内部,throws用于方法声明。
                  2. throw关键字用于方法内部抛出一个异常对象,throws关键字用于在方法声明上声明抛出异常类型。
                  3. throw关键字后面只能有一个异常对象,throws后面一次可以声明抛出多种类型的异常。

编译时异常与运行时异常

        编译时异常:如果方法内部抛出了一个编译时异常,那么方法上就必须要声明,而且调用者也必须要处理。

        运行时异常:如果方法内部抛出了一个运行时异常,那么方法上可以声明也可以不声明,调用者可以处理也可以不处理。

编译时异常与运行时异常的区分方法

         运行时异常: RuntimeException以及RuntimeException子类属于运行时异常。

         编译时异常: 除了运行时异常就是编译异常。

总结

        如果需要通知到调用者,代码出了问题,就使用抛出处理

        如果代码直接与用户打交道,遇到了异常不要再抛。此时就应该使用捕获处理