zoukankan      html  css  js  c++  java
  • 异常处理机制


    一、Error:错误

    1、造成原因:

    (1)JVM 资源耗尽

    (2)JVM系统内部错误

    2、Error不需要编写代码去处理

    二、Exception:例外(异常)

    1、造成原因:是编程错误以及外在的一些因素造成的。如:

    (1)数组角标越界

    (2)数学计算异常

    (3)链接中断

    (4)试图读取的文件不存在

    (5)空指针异常

    (6)输入类型不匹配类型

    三、异常的处理机制

    1、Java程序如果在执行过程中产生了异常,会自动创建一个Exception类,该类会被自动提交(submit)给Java的运行时系统(运行时系统在虚拟机中用于监控),这个过程被称为抛出异常。运行时系统以日志的形式输出异常信息,并且中止程序的执行。

    2、异常处理机制---抓抛模型

    (1)
    try{

    //尝试去捕捉异常(选定异常范围)

    }catch(Exception e1){

    //对捕获到的异常对象进行处理

    //catch(特定异常类型)中可以精准的捕获异常

    }catch(Exception e2){

    //catch代码块可以定义多个

    }finally{

    //finally代码块总会被执行到,使用再必须要执行的代码,比如释放输入输出流

    }

    (2)

    throws 上抛异常(抛到调用这个方法的地方),最终必须要又异常处理的方法,如果一直上抛相当于并没有处理异常。异常上抛将一直上抛到异常处理位置,这一过程我们称之为捕获异常。其实真正的抛出异常是发生在异常代码处。

    格式如下:

    public static void 方法名 throws Exception ;

    3、语法的错误不是异常


    四、Throwable类

    1、Throwable是一个大类,内包括Error、Exception两个类

    2、Exception中包括RuntimeException(unchecked)和checked两种

    (1)RuntimeException(运行类)其子类都是非受检异常,是代码的问题,不需要抛出异常。一般解决方法是修改代码。

    (2)除了RuntimeException其他异常类都叫做受检异常,必须将其抛出或解决,否则编译不通过。通常不是代码的错误,比如:读取文件时文件不存在,链接断开。

    3、异常处理机制使用时机:发生受检异常,不是代码的问题的时候使用。


    五、注意

    1、在Throwable类中

    (1)子类再覆写父类中的方法时,不能抛出比父类方法更高更广的异常

    (2)存在多个catch时,子类异常必须写在父类异常上面的catch

    2、如果在try中写System.exit();则会跳过finally代码块(直接退出);


    六、自定义异常

    1、自定义异常时,所有异常必须都是Throwable的子类

    2、自定义异常式,必须继承一个异常父类

    3、throw是手动抛出异常(throws是上抛异常)


    七、开发注意

    1、对于实际的开发中不能直接去捕获Excetion(不允许),应该更加明确其子类异常。

    2、不要生吞异常:如果异常不抛出,也没有输出到日志,程序在后续之中以不可控的形式结束,这样就会造成判断不了时哪里出现了异常,以及什么原因造成了异常,增加了排查问题的可能性

    3、涉及到资源的时候必须子啊finally中释放资源

    4、最小化 try{}catch{}

    Try-catch代码段会产生额外的性能开销,会影响JVM对代码的优化,建议捕获有必要的代码,不允许直接大try包裹主所有代码

  • 相关阅读:
    (十三)学习CSS之两个class连一起隔空格和逗号
    (十二)学习CSS之box-sizing 属性
    (五)学习JavaScript之firstChild 属性
    (四)学习JavaScript之className属性
    (三)学习JavaScript之getElementsByTagName方法
    两张表一对多的连接,取多记录表中最新的一条数据
    oracle 快照
    Linux常用命令大全
    baidu 快递查询API
    oracle 触发器实现主键自增
  • 原文地址:https://www.cnblogs.com/JQbiu/p/10801900.html
Copyright © 2011-2022 走看看