Java异常处理

一、异常简介

程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止。在Java中即,Java在编译或运行或者运行过程中出现的错误

二、异常对象

异常对象与正常new一个对象一样,标准异常类都有两个构造器
一个是默认构造器,一个是接受字符串作为参数,以便把相关信息放入异常对象的构造器
throw new Exception()
throw new Exception("")

三、捕获异常

3.1 try块

用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。

3.2异常处理程序

  • catch 不能独立于 try 存在
  • catch里面不能没有内容
  • try 代码后不能既没 catch 块也没 finally 块
  • 异常如果是同级关系,catch谁前谁后没有关系
    如果异常之间存在上下级关系,上级需要放在后面
try{
	//code that might generate exception
}catch(Type1 id1){
	//handle exception of type1
}catch(Type2 id2){
	//handle exception of type2
}

异常处理有两种模型

  • 终止模型:一旦异常抛出,就不会回来继续执行
  • 恢复模型:尝试修正错误以后,重新调用方法
    一般都是采用终止模型

四、异常说明

将可能发生的异常写在方法声明后面
关键词throws,不是throw

//A,B,C都为异常
void f() throws A,B,c....{
}

如果方法后没有异常说明就不会抛出异常
除了从RuntimeException继承的异常,它们可以在没有异常说明的时候被抛出

五、异常类

5.1 简介

在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)

其下有2个子类

  • Error:是程序无法处理的错误,表示编译时和系统错误,
  • Exception:是程序本身可以处理的异常,在java类库、用户方法以及运行时故障中发生的异常

Java的异常按照受不受检查分为

  • 1. 非检查异常

RuntimeException 与其子类,以及错误(Error)
不需要自己thows会自动抛出,但编译器要求你必须处置的异常

  • 2. 检查异常

非运行时异常
编译器不要求强制处置的异常
代码还没运行呢,编译器就会检查你的代码,会不会出现异常

图中后面具体的异常只罗列了部分
在这里插入图片描述

5.2 常用方法

1. 返回异常发生时的详细信息
public string getMessage();
 
2. 返回异常发生时的简要描述
public string toString();
 
3. 返回异常对象的本地化信息。使用Throwable的子类覆盖这个方法,可以声称本地化信息。
	如果子类没有覆盖该方法,则该方法返回的信息与getMessage()返回的结果相同
public string getLocalizedMessage();
 
4. 在控制台上打印Throwable对象封装的异常信息
public void printStackTrace();

六、finally块

对于一些代码,可能会希望无论try块中的异常是否抛出,它们都能得到执行,finally语句块总会执行即便在 try块中有return,break,continue等改变执行流的语句,finally也会执行。

七、关键词总结

关键词说明
try用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出
catch用于捕获异常。catch用来捕获try语句块中发生的异常
finallyfinally语句块总是会被执行
throw用于抛出自定义异常
throws异常说明,在方法定义后声明可能会发生的异常

参考以下博客所写

传送门1传送门2传送门3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值