异常

异常:

  程序在运行期间,发生了不可预测的事件,它阻止了我们程序的正常运行!

异常处理机制:

  在程序发生异常之后,代码能按照我们之前设计的顺序 继续执行!

所有异常和错误的父类==》Throwable

异常的分类:

  01.运行时异常 RuntimeException

  02.受查异常  CheckedException

IOException

FileNotFoundException  文件没找到

ArithMeticException  算术异常

InputMismatchException  输入类型不匹配

NullPointerException  空指针异常

ClassNotFoundException  没有找到类

ClassCastException  类型转换异常

异常处理分为两种方式:

  1.try  catch  finally

    01.try  不能单独使用,必须和catch/finally联合使用

          存放可能出现异常的代码

          如果try代码块中出现了异常,会去匹配catch代码块对应的异常类型,没有匹配的类型,直接进入finally

    02.catch   可以有多个catch块,每个catch都能捕获一个异常 

          多个catch块捕获的异常类型不允许重复

          多个catch块捕获的异常必须是从小到大排列

          如果多个catch块都能匹配,默认使用第一个匹配的

          如果try中没有发生异常,catch块被忽略

          每个代码块中的变量都是私有的

    03.finally  无论代码是否发生异常,都会执行的代码块

          如果遇到了System.exit(0)或者System.exit(非0)不会执行finally

          如果try代码块中出现了return  也是先执行finally  之后再跳出方法

          后续关闭流,释放数据库链接资源

  2.throw抛出异常,throws声明异常

    01.throw抛出异常

       语法:throw new 异常类型(异常信息)

       异常类型必须是Exception或者其子类

       一个throw只能抛出一个异常

       只能出现在方法体内

       针对于抛出的异常 两种方式解决

          001.try  catch  finally

          002.使用throws声明异常

       抛出异常的类型必须是 声明异常本身或者是其子类

    02.throws声明异常

       语法:throws 异常类型1,异常类型2....

       定义在方法的参数列表之后,可以声明多个异常

       throws所在的方法不处理异常,方法的调用在去处理异常

       如果在main方法中使用throws,则是JVM来处理异常

异常链的使用

  把我们捕获的异常包装成一个新的异常,继续抛出!新异常中记录了异常的原始信息!

  便于我们找到异常的根本原因!

自定义异常

  01.异常类必须是Throwable的子类

  02.自定义异常类 继承RuntimeExceptionException

posted @ 2017-12-15 12:01  子夜未央  Views(145)  Comments(0Edit  收藏  举报