Java异常 Throwable

(黑马程序员学习心得) 

Throwable类是Java所有异常的“爹”,超类;Java处理异常的方式是JVM中断处理。


 

他有两个儿子:

  Error代表错误,相当于程序得了无法治愈的绝症,必须修改源代码程序才能够继续执行。

  Exception代表编译期异常,可以处理。异常相当于程序的了一个小毛病(发烧,感冒)把异常处理掉程序就可以继续执行。

    RuntimeException是Exception的子类,表示运行期抛出的异常,Java程序运行过程中出现的问题。

    NullpointerException空指针异常。

 

    异常处理方式:

    编译期异常处理:

    1、交给JVM处理异常

      使用throws ParseException将异常抛给JVM处理,而JVM处理异常的方式是中断处理,如果出现异常,则在控制台抛出异常错误。

    2、使用try catch方法处理异常

      使用try{}catch{}方法,依旧会抛出异常,但是抛出异常之后,后续程序可以继续执行。

      但是异常依旧会被抛出。

  Error错误:

    常见错误:OutOfMemoryError:Java heap space 内存溢出错误,超出了JVM分配的空间

    错误只能够通过修改源代码改正。

 

异常产生过程:

  当程序出现了异常,JVM首先创建一个异常类,其中包含着三个内容,异常的内容、位置、原因,异常类(内容,位置,原因)。如果有try catch则进行异常捕获,打印异常程序继续执行;如果没有异常捕获程序,则继续在主函数里找调用该方法的位置,在调用的过程中如果有异常处理机制,则程序打印出异常继续执行,如果没有异常处理机制,则JVM用红色字体打印出异常,并且对程序进行中断处理。

 

异常处理过程:throw try catch throws finally

  throw关键字:在指定的方法中抛出指定的异常 throw new xxxException(“异常产生原因”);

        注意事项:1、throw关键字必须协在方法的内部

             2、throw关键字后边new的对象必须是Exception或者其子类对象

             3、throw关键字抛出指定异常对象,就必须处理这个异常对象。

                如果常见的是RuntimeExcepetion或者其子类对象,则可以不处理,默认交给JVM进行处理(打印异常对象并中断程序)。

                比如NullpointerException空指针异常、数组越界异常……

             4、如果是编译异常(写代码期间的报错),必须处理异常,throws或者try catch

  throws关键字:声明异常,当方法内部抛出异常对象,可以使用throws关键字处理异常对杨:报告给调用者让调用者去处理(自己不处理,给别人处理),最终交给JVM处理;

      method  throws  xxxException(){

            throw new xxxException(“异常产生原因”);

            }

        注意事项:1、必须写在方法声明处

             2、后边生命的异常必须是Exception或者其子类

             3、方法内部抛出了多个异常对象,则必须声明多个异常

                如果抛出多个异常对象有子类父类关系,则直接生命父类异常即可。

             4、调用了一个声明抛出异常的方法,必须处理声明的异常

                 要么继续使用throws声明抛出,交给方法调用者处理最终给JVM,要么try……catch自己处理异常

  try……catch关键字:异常处理的第二种方式,自己处理异常,有可能产生有可能不产生。  

    try{

      可能会出现异常的代码

      }catch(Exception e){

      //异常处理逻辑 打印出异常错误,一般在工作中是把异常信息记录到一个日志中去

      System.out.println(e);

      }catch(异常类名 变量名){

        ……

      }

        注意事项:1、try可能抛出多个异常对象,多一个一使用多个catch来处理这些异常对象

             2、try产生异常,就会执行catch中的逻辑,然后继续执行后面代码

                如果try没有产生异常,则直接执行后面代码就像if……else

 

 

 

  

 

posted @ 2020-07-28 15:05  三分剑气啸盛唐  阅读(310)  评论(0)    收藏  举报