zoukankan      html  css  js  c++  java
  • 异常

    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块中忽略捕获的异常

  • 相关阅读:
    使用comet架构实现了一个基于网页的视频监控prototype!!!!哇哈哈庆祝一下
    Pixysoft.Framework.Noebe.Datamining 数据挖掘开发实录
    论创业成功!让大家的青春充满着无限美好的回忆
    新年第一篇 数据库备份恢复系统上线的挫折
    .Net FrameWork 4.0中使用EF向数据库插入数据报datatime2类型错误的解决办法
    RoRoWoBlog 开源博客系统介绍
    第一次偶然出现的“System.Data.Entity.dll”类型的异常
    序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
    我也来说说Entity Frame Work 4中的数据库优先和代码优先两种方式(2)
    Asp.net MVC 2 + Castle + NHibernate 项目实战(1)
  • 原文地址:https://www.cnblogs.com/yunfeioliver/p/7707251.html
Copyright © 2011-2022 走看看