Java异常知识点总结

Java异常知识点总结

一、语法结构

常规语法

  • try块是必须的
  • catch块和finally块是可选的,但至少有其中一个,也可同时出现
  • 可有多个catch块,子类异常必须先于父类异常
  • catch块位于try块之后,finally块位于catch块之后
        try {

        } catch (NullPointerException e) {

        } catch (Exception e) {

        } finally {

        }

Java7增强语法

  • 自动关闭资源的try语句
		// BufferedInputStream 的父类实现了Closeable接口
		try (InputStream is = new BufferedInputStream(new FileInputStream("file"))) {
            is.read();
        }

为了保证可以正常关闭资源,这些资源必须实现AutoCloseable或者Closeable接口

  • 捕获多种异常的catch语句
		// 捕获的异常为RuntimeException,否则代码中没抛这些Checked异常编译的时候会报错
		try {

        } catch (IndexOutOfBoundsException | NullPointerException | ArithmeticException e) {

        }

二、知识点总结

Checked异常和RunTime异常
Java异常分为Checked异常和Runtime异常两大类,所有的RuntimeException类及其子类的实例被称为Runtime异常,其他的异常则被称为Checked异常;Runtime异常可处理也可忽略交给程序抛出,Checked异常如果没有处理编译将不通过,处理有两种方式:

  • 使用try-catch捕获异常
  • 在方法签名上使用throws声明抛出异常

try-catch异常捕获流程

Throwable、Error、Exception

finally块总会被执行,除非虚拟机退出

        try {
            // finally 可以执行
            return;
            // finally不能执行
            System.exit(1);
        } catch (Exception e) {

        } finally {
            System.out.println("invoked");
        }

finally块尽量不使用return或throw

使用throws声明抛出异常和使用throw抛出异常

访问异常信息常用方法

  • getMessage()
  • printStackTrace()
  • printStackTrace(PrintStream s)
  • getStackTrace()

自定义异常

  • 继承Exception类或RuntimeException类
  • 通常提供一个无参构造方法和一个带一个字符串(用来描述异常信息)的构造方法

异常链

业务层捕获数据层原始异常,重新抛出一个新的业务异常,这种处理方式称为异常转译。

public class CustomException extends RuntimeException {

    public CustomException(Throwable t) {
        super(t);
    }

    public static void main(String[] args) {
        try {
            String s = null;
            System.out.println(s.length());
        } catch (Exception e) {
            throw new CustomException(e);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值