• Java异常处理


    java异常体系:

    Throwable是所有异常和错误的超类。两个子类Error和Exception分别表示错误和异常。Error是程序无法处理的,JVM一般会选择终止退出;Exception是程序可以捕获并处理的,Exception分为检查异常和非检查异常(也称运行时异常)。

    • Checked Exception:Java语言规定必须在程序中对Checked Exception进行处理,编译器会对此作出检查。
    • Runtime Exception:编译器不会检查程序是否对运行时异常做了处理,在程序代码中也不必捕获运行时异常的对象,也不必在方法体中声明抛出运行时异常。它表示的是编程发生了错误,需要去找出错误修改代码,而不是捕获异常。

    java异常处理机制

    • try关键字: 后面紧跟一个代码块,try块放置可能引发异常的代码。
    • catch关键字: 对应一个异常类型和一个代码块,catch块中即是错误处理代码。
    • finally关键字: finally块总是在方法返回前执行,用于回收一些物理资源。
    • throw关键字: 抛出一个具体的异常对象。
    • throws关键字: 主要在方法签名中使用,用于声明可能抛出的异常。

    java异常处理流程

    • 抛出(throw)异常:try块中的业务功能实现代码出现异常,系统自动生成一个异常对象,异常对象提交给Java运行时环境。
    • 捕获(catch)异常:Java运行时环境接收异常对象后,寻找处理该异常对象的catch块。

    完整的异常处理语法

    1.当前方法明确知道该如何处理异常,则程序应该使用try...catch块来捕获异常,然后在对应的catch块中修复异常。

    try{
        //业务实现代码
    }catch(SubException e){
        //异常处理代码
    }finally{
        //异常发生,方法返回之前,总是要执行的代码
    }
    

    当Java程序执行try块、catch块时遇到return或者throw语句,系统不会立刻结束该方法,而是寻找异常处理流程是否包含finally块。如果没有包含finally块,程序立即执行return或者throw语句,方法终止;如果包含finally块,系统立即开始执行finally块,执行完finally块之后再次跳回来执行try块、catch块里的return或者throw语句。
    2.当前方法不知道如何处理这种异常,则在定义方法的使用声明抛出该异常。该异常由上一级调用者处理。

    throws ExceptionClass1,ExceptionClass2...
    

    3.程序自行抛出异常

    throw ExceptionInstance;
    

    如果throw语句抛出的异常是Checked异常对象,则该语句必须位于try块里,显示捕获该异常;或者放在一个带throws声明抛出的方法中,交由方法调用者处理。
    如果throw语句抛出的异常是Rutime异常,可以完全不理会该异常。

  • 相关阅读:
    添加组合索引时,做相等运算字段应该放在最前面
    常用位运算
    redis php扩展简单使用
    mysql优化之简单概念
    mysql优化之sql语句优化
    简单画图 gd库函数
    win下 安装mongodb
    伪静态之实际应用
    tomcat win简单配置
    docker
  • 原文地址:https://www.cnblogs.com/yc-chen/p/6951676.html
Copyright © 2020-2023  润新知