Java 异常处理专题,从入门到精通

栏目: IT技术 · 发布时间: 4年前

内容简介:一个try代码块后面跟多个catch代码块的情况就叫多重捕获代码中发生异常,异常被抛给第一个catch块,如果不匹配则继续往下一个catch进行传递或者

内置异常和Throwable核心方法

Java内置异常

可查异常(必须要在方法里面捕获或者抛出)

  • ClassNoFoundException 应⽤程序试图加载类,找不到对应的类
  • IllegalAccessException 拒绝访问⼀个类的时候
  • NoSuchFieldExcetion 请求的变量不存在
  • NoSuchMethodException ⽅法不存在

不可查异常

  • ArrayIndexOutOfBoundsException 数组索引越界
  • ClassCastException 强制失败抛出异常
  • NullPointerException 需要对象的地⽅使⽤ null 时,抛出该异常
  • NumberFormatException 将字符串转换成⼀种数值类型,但该字符串不能转换为适当格式时,抛出该异常

Throwable类核心方法

  • public String getMessage()
    • 异常的详细信息
  • public synchronized Throwable getCause()
    • 异常原因
  • publicvoid printStackTrace()
    • 打印错误的堆栈信息,即错误输出流,可以看到错误原因和所在位置
  • private synchronized StackTraceElement[] getOurStackTrace()
    • 堆栈层次的数组,下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底

Try Catch异常捕获

异常处理之捕获语法

try{
 // 可能发⽣异常的代码
}catch(AExceptionName e){
 //出异常的时候处理
}catch(BExceptionName e){
}fianall{
}
  • try后面跟一个或多个catch块,或一个finally块,或两者的组合
  • catch不能独立于try而单独存在
  • 如果代码没有对应的异常类进行捕获,则默认打印异常堆栈

异常进阶

finally和多重异常捕获

一个try代码块后面跟多个catch代码块的情况就叫多重捕获

语法

try{
 // 可能发⽣异常的代码
}catch(ExceptionName1 e1){
 //出异常的时候处理
}catch(ExceptionName2 e2){
 //出异常的时候处理
}

代码中发生异常,异常被抛给第一个catch块,如果不匹配则继续往下一个catch进行传递

finally关键字

  • 用来创建在try代码块后面执行的代码块
  • finally代码块中的代码总会被执行
  • 一般用于资源回收释放等操作

语法

try{
 // 可能发⽣异常的代码
}catch(ExceptionName1 e1){
 //出异常的时候处理
}finally{
 //肯定执⾏的代码
}

或者

try{
 // 可能发⽣异常的代码
}finally{
 //肯定执⾏的代码
}

throws/throw关键字

异常的抛出throw和声明throws

代码出异常常见的处理方法

  • try catch捕获
  • throws声明异常,往外抛出
    • 语法:throws子句放在方法参数列表的右括号之后,一个方法可以声明抛出多个异常,多个异常之间用逗号隔开

例子

public class Main {
 public static void readChar() throws IOException,RemoteException {
        int input = System.in.read(); 
 }
}
  • try catch中捕获了异常,处理方法
    • 当前捕获自己处理
    • 捕获自己处理然后继续往外面抛异常

语法

throw new ExceptionName("异常信息");

例子

throw new IOException("File not found");

总结

当抛出异常被检查的异常,我们必须使用try-catch块来处理它,或者在方法声明中使用throws子句继续往外抛

自定义异常

为什么要使用自定义异常

  • 当前JDK内置的一出场不满足需求,项目会出现特有异常
  • 自定义异常可以让业务更清晰

如何自定义异常

  • 异常都是继承自Exception类,所以我们要自定义的异常也需要继承这个基类

例子

public class BaseException extends Exception {
    private String errorMessage;
    private String errorCode;

    public BaseException(String errorCode, String errorMessage) {
        super(errorMessage);
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Application Hacker's Handbook

The Web Application Hacker's Handbook

Dafydd Stuttard、Marcus Pinto / Wiley / 2011-9-27 / USD 50.00

The highly successful security book returns with a new edition, completely updated Web applications are the front door to most organizations, exposing them to attacks that may disclose personal infor......一起来看看 《The Web Application Hacker's Handbook》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具