Java异常

异常分类

异常主要有两类:

  • Error:系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理。
  • Exception:可以处理的异常。

Exception有分为:

  • RuntimeExcption 异常(运行时异常):可以捕获,也可以不捕获。

  • 非 RuntimeException(受检异常 / 编译时异常,Checked Exception):必须捕获。

RuntimeExcption 异常主要包括:

  • 错误的类型转换
  • 数组访问越界
  • 访问 null 指针
  • 算术异常

Checked Exception 异常主要有:

  • 打开一个不存在的文件
  • 没有找到具有指定名称的类
  • 操作文件异常
  • io 异常
throw 和 throws

throw 手动抛出异常:

		if (a == null || b == null) {
            throw new NullPointerException();
        }

throws 声明异常:

	public static void throwsTest() throws FileNotFoundException {
        new FileInputStream("/home/project/shiyanlou.file");
    }
捕获异常

使用 trycatch 语句块来捕获异常,有时候还会用到 finally

try 语句块是必不可少的,catchfinally 语句块可以根据情况选择其一或者全选。

catch 语句块可以有多个,表示捕获多个异常。

自定义异常

(1)继承 Exception 或其子类;

(2)提供无参构造方法和带字符串参数的构造方法。

例如:

// MyAriException.java
public class MyAriException extends ArithmeticException {
    //自定义异常类,该类继承自ArithmeticException

    public MyAriException() {

    }
    //实现默认的无参构造方法

    public MyAriException(String msg) {
        super(msg);
    }
    //实现可以自定义输出信息的构造方法,将待输出信息作为参数传入即可
}
异常堆栈

当异常抛出后,我们可以通过异常堆栈追踪程序的运行轨迹。

例如:

java.lang.NullPointerException
    at ExceptionStackTrace.method2(ExceptionStackTrace.java:7)
    at ExceptionStackTrace.method1(ExceptionStackTrace.java:3)
    at ExceptionStackTrace.main(ExceptionStackTrace.java:11)

从下往上看,就可以得出程序运行的轨迹。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值