博客园 首页 私信博主 显示目录 隐藏目录 管理 动画 动画

异常

1、异常概念

  程序运行时 发生我们没有预测到的结果 他阻止了程序按照我们预期效果执行

2、如何让程序发生异常代码还可以继续执行

  异常处理机制  在程序发生异常后 还能按照我们事先设定好的逻辑 继续执行后续代码

3、异常的分类和结构图

  1、所有异常和error的父类  throwable

  throwable类是java异常类型的顶层父类 一个对象只有是throwable类(直接的或间接地)实例 他才是一个异常对象 才能被异常处理机制识别 jdk中内建了一些常用的异常类 我们可以自定义异常

  2、根据编译器对异常的处理要求 异常分两类

    1、运行时异常 在程序运行期间产生的异常

    2、受查异常 在程序编译期间产生的异常

  3、throwable

    1、Error     异常处理机制无法处理 一般为代码问题造成堆栈爆炸等

    2、Exception

      1、受查异常

        1)IOexception

        2)EOFException

        3)ClassNotFoundException

        4)FileNotFoundException

      2、RuntimeException

        1)ArithmeticException

        2)InputMismatchException

        3)NullPointException

4、异常处理方式 try catch finally

  1、try的使用

    1、try代码块不能单独使用 必须和catch或finally 中的一个一起使用

    2、可能发生异常的代码

    3、如果我们try代码块中不发生异常 有finally的情况下 先执行finally 再执行finally之后的代码块

      如果try代码块发生异常 先去catch中匹配异常 如果匹配成功 执行对应的catch 否则执行finally 然后程序终止

   2、catch的使用

    1、每一个catch代码块都是用于捕获并处理一个特定的异常或者是这个异常的子类

    2、catch(ArithmeticException ex) 定义了异常类型

    3、可以同时出现多个 但不能重复

    4、多个catch代码块中异常类型书写顺序 必须是 从小到大!

    5、我们会从多个catch代码块中找到一个最先匹配的 然后交给这个代码块处理

    6、每个代码块中的变量都是独立的 别的代码块不能访问

    7、如果每个代码块都不匹配 先去执行finally 之后终止程序

    8、如果try中没有发生异常 则所有catch块被忽略

    9、jdk1.7的版本中支持多个异常声明在一个catch块中

  3、finally的使用

    1、无论发生什么 finally都会执行

    2、如果try中没有异常 但是有return 这时候会先执行finally之后执行return

    3、如果代码中出现System。exit(int status)那么不会执行finally

      System。exit(0); 正常退出

      System。exit(非0) ;非正常退出

    4、做一些程序的清理工作 关闭流 释放数据库的链接等

5、异常处理方式  throw---throws

  1、throw

    1、抛出的异常类型可以使Exception或者其子类

    2、一条throw语句只能抛出一个异常对象

    3、throw 只能出现在方法体内

    4、对于throw抛出的异常我们有两种处理方式

      1、try     catch  finally

      2、throws

  2、throws

    1、throws声明在方法名称之后

    2、throws可以声明多个 每个异常与异常之间用逗号隔开

    3、throws可以声明异常 表示当前方法可以出现异常 方法的调用来处理异常

    4、如果在主函数中使用throws 则由我们的vm处理

6、异常链

    用处:例子:连环汽车追尾 如何头车找到尾车

    异常链是指将捕获的异常包装进一个新的异常中 新异常中记录原始异常的信息 并重新抛出异常的处理方式

7、自定义异常

    创建继承Exception的类 或继承Exception的子类的类

    重写构造 写单个带String 还有带String和异常对象的那个构造

8、异常的使用原则

    1、异常只能用于非正常情况

    2、为异常提供说明文档

    3、尽可能避免异常 特别是运行异常

    4、保持异常的原子性

    5、避免过于庞大的try代码块

    6、在catch块中指定具体的异常类型

    7、不要在catch块中忽略捕获的异常

posted @ 2017-10-21 22:44  这才是真的阿呆云飞  阅读(189)  评论(0编辑  收藏  举报