JAVA并列的异常,Java Exception

一. 异常的体系结构

java.lang.Throwable

① Error: 错误, 程序中不进行处理

② Exception: 异常, 要求在编写程序时, 就要考虑到对这些异常的处理

Ⅰ. 编译时异常: 在编译期间会出现的异常(执行javac.exe命令时, 出现的异常)

Ⅱ. 运行时异常: 在运行期间出现的异常(执行java.exe命令时, 出现的异常)

复制代码

当执行一个程序时, 如果出现异常, 那么异常之后的代码就不再执行!

二. 如何处理Exception的异常

Java提供的是异常的抓抛模型

1. "抓": 抓住上一步抛出来的异常类的对象. 如何抓? 即为异常处理的方式, 有两种:

① try-catch-finally

② throws + 异常类型

2. "抛": 当我们执行代码时, 一旦出现异常, 就会在异常的代码处生成一个对应类型的对象, 并将此对象抛出(自动抛出 / 手动抛出(throw + new 异常类))

一旦抛出此异常类的对象, 那么程序就终止执行

此异常类的对象抛给方法的调用者

java提供了两种方式用来处理一个异常类的对象

复制代码

异常类, 既可以是现成的异常类, 也可以是自己创建的异常类

三. 异常的处理方式:

方式一:

try{

// 可能出现异常的代码

}catch(Exption1 e1){

// 处理方式一

}catch(Exption2 e2){

// 处理方式二

}finally{

// 一定要执行的代码

}

注:

① try 内声明的变量, 类似于局部变量, 除了 try{} 语句, 就不能被调用

② catch 语句内部是对异常对象的处理: e.getMessage(); e.printStackTrace()

③ 可以由多个 catch 语句, try 中抛出的异常类对象从上往下去匹配 catch 中的异常类的类型, 一旦满足就执行 catch 中的代码. 执行完, 就跳出其后的多条 catch 语句

④ 如果异常处理了, 那么其后的代码继续执行

⑤ 若 catch 中多个异常类型是"并列"关系, 那么顺序前后都可以. 若 catch 中多个异常类型是"包含"关系, 须将子类放在父类的之前, 进行处理. 否则报错

⑥ finally 是可选的

⑦ finally 中存放的是一定会被执行的代码不管 try 中、catch 中是否仍有异常未被处理, 以及是否有 return 语句

⑧ try-catch 是可以互相嵌套的

方式二:

① 在方法的声明处, 显式的抛出该异常对象的类型

② 格式: 如: public static void method() throws Exception{}

③ 当在此方法内部出现异常的时候, 会抛出一个异常类的对象, 抛给方法的调用者

④ 异常的对象可以逐层向上抛, 直到main中. 当然在向上抛出的过程中, 可以再通过 try-catch-finally进行处理

复制代码

对于运行时异常来说, 可以不显式的进行处理

对于编译时异常来说, 必须要显式的进行处理

四. 如何自定义一个异常类

① 自定义的异常类继承现有的异常类

② 提供一个序列号, 提供几个重载的构造器

复制代码

public class MyException extends Exception{

static final long serialVersionUID = -70348975766939L;

public MyException(){}

public MyException(String msg){

super(msg);

}

}

复制代码

子类重写的父类的方法, 其抛出的异常类型只能是被重写的方法的异常类的子类或本身

其中, 要区分: throw 与 throws 的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值