java异常

异常

异常的分类

  • 检查性异常:在编译时出现的异常
  • 运行时异常:在编译时没有问题,但是在运行时出现了的异常
  • 错误:错误不是异常,而是脱离程序员控制的问题,如栈溢出。

Exception 类的层次

在这里插入图片描述

java内置异常类

java定义了一些异常类在 java.lang 标准包中。如ArithmeticExceptionArrayIndexOutOfBoundsException等等。

异常方法

下面是 Throwable 类的主要方法

方法描述
String getMessage()返回发生异常的详细信息,这个消息在 Throwable类的构造函数初始化了
Throwable getCause()返回一个Throwable对象,代表异常原因
toString()使用getMessage() 的结果返回类的串级名字
void printStackTrace()打印toString的结果和栈层次的 System.err,即错误输出流
StackTraceElement[] getStackTrace()返回一个包含堆栈层次的数组,下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底
Throwable FillInStackTrace()用当前的调用栈层次填充Throwable对象栈层次,添加到栈层次任何先前信息中。

捕获异常

try-catch

try{
	// 代码
}catch(Exception e){
	// 错误处理
}

多重捕获

try{
	// 代码
}catch(异常类型1 e1){
	// 错误处理
}catch(异常类型2 e2){
	// 错误处理
}catch(异常类型3 e3){
	// 错误处理
}

finally

try{
	// 代码块
}catch(Exception e){
	// 错误处理
}finally{
	// 最终处理
}

需要注意的是,不管代码是否出现错误,或者存在return等情况,finally一定会在执行完代码块后执行。

throws 和 throw 关键字

  1. throws可以向上抛出一个可能存在的异常,而不是通过 try-catch 处理这个可能存在的异常。throws一般在一个方法的参数列表的尾部,它可以同时抛出多个异常,但是要用逗号隔开
  2. throw 可以手动抛出一个异常,无论他是新实例化的还是刚捕获到的。

声明自定义异常

在java中可以自定义异常,但是要注意:

  • 所有异常都必须是 Throwable 的子类

  • 如果希望写一个检查性异常,要继承 Exception 类。

  • 如果想写一个运行时异常,那么要继承RuntimeException类。

      class MyException extends Exception{
    
      }
    

通用异常

在java中定义了两种类型的异常和错误

  • jvm异常:由 jvm 抛出的异常或错误。如:NullPointerException
    在java中定义了两种类型的异常和错误

  • jvm异常:由 jvm 抛出的异常或错误。如:NullPointerException

  • 程序级异常:由程序或api程序抛出的异常。如:IllegalStateException

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值