• Java公开课-04.异常


    一,异常的概念

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

    二,怎么保证我们的程序在发生异常以后 ,代码继续执行?

      异常处理机制

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

    三,异常的分类和结构图

      1.所有异常和错误的父类--Throwable

        Throwable类是Java异常类型的顶层父类,一个对象只有是Throwable类(直接或间接的)实例,它才是一个异常对象。才能被异常处理机制识别,JDK中内建了一些常用的异常类,我们也可以自定义异常

      2.根据编译器对异常的处理要求,异常分俩类

        2.1运行时异常(RuntimeException):在程序运行期间产生的异常!

        2.2受查异常(checked Excep):在程序编译期产生的异常!

      3 Throwable

        3.1 Error          //这个错,靠异常处理机制处理不了,一般是代码问题造成的堆栈爆炸等

        3.2 Exception

          3.2.1 受查异常

            3.2.1.1 IOException

            3.2.1.2 EOFException

            3.2.1.3 ClassNotFoundException

            3.2.1.4 FileNotFoundException

          3.2.2 RuntimeException

            3.2.2.1 ArithmeticException

            3.2.2.2 InputMismatchException

            3.2.2.3 NullPointException

    四,异常处理方式(一):try-catch-finally

      1.try的使用

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

        002.可能发生异常的代码

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

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

      2.catch的使用

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

        002.catch(ArithmeticException ex)  定义了异常类型

        003.可以同时出现多个,但不能重复

        004.多个catch代码块中异常类型书写顺序,必须是  从小到大

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

        006.每个代码块中的变量是独立的,别的代码块不能访问

        007.如果每个代码块都不匹配。先去执行fianlly,之后终止程序

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

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

      3.finally的使用

        001.无论发生什么,fially都会执行

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

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

          System.exit(0);  正常退出

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

        004.做一些程序的清理工作,关闭流,释放数据库的连接等

    五,异常处理方式(二):throw-throws

      1.throw

        01.抛出的异常类型可以是Exception或者其子类

        02.一条throw语句只能抛出一个异常对象

        03.throw只能出现在方法体内

        04.对于throw抛出的异常我们有俩种处理方式

          001.try。。。catch。。。finally

          002.throws

      2.throws

        01.throws声明在方法的名称之后

        02.throws可以声明多个 ,每个异常异常之间用逗号隔开

        03.throws可以声明异常,表示当前方法可以出现异常,房法的调用者来处理异常

        04.如果在主函数中使用throws,则由我们的jvm处理

    六,异常链

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

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

    七,自定义异常

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

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

    八。异常的使用原则

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

      2.为异常提供说明文档

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

      4.保持异常的原子性

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

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

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

  • 相关阅读:
    做运维的感悟(做运维需要考虑事,运维组织结构,运维学习地图....)
    Go实现ssh执行远端命令及远程终端
    Go加密算法总结
    Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置
    博客园代码折叠
    win10关闭锁屏,直接进入登录界面

    多路查找树
    树结构的应用
    二叉树
  • 原文地址:https://www.cnblogs.com/DawnCHENXI/p/7701139.html
Copyright © 2020-2023  润新知