JAVA学习六:异常处理

1.什么是异常
异常是在程序中导致程序终端运行的一种指令流。
当出现异常时,JVM会new一个对象,用来代表异常。如果出异常后,它会通过类似返回的方式抛给这个方法,再返回虚拟机后,虚拟机就会结束程序。

2.处理异常
如果想要对异常进行处理,则必须采用标准的处理格式,如下:
try{
//有可能发生异常的代码块
}catch(异常类型1 对象1){
//异常的处理操作
}catch(异常类型2 对象2){
//异常的处理操作
}…
finally{
//异常的统一出口
}

finally是异常的统一出口,无论是否发生异常finally都会必然执行,可以拿来执行如释放文件…等必须操作的行为。
面试问题:
finally在***情况下是否会执行。
如果这个情况是程序被关闭(程序终止(System.exit(0)),电脑关机了,停电了等),只有这种情况finally才不会执行。其他情况都会执行。只有这个代码System.exit(0)才会在程序中跳过finally。

try+catch的处理流程
1、一旦产生异常,则系统会自动产生一个异常类的实例化对象。
2、那么此时如果异常发生在try语句里,则会自动找到匹配的catch语句执行,如果没有在try语句中,则会将异常抛出给产生异常的方法的调用位置。
3、所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功。则表示由此catch进行处理。
3.异常格式
(1)是try{}catch(){}catch(){}finally{}
(2)try{}catch(Exception1|Exception2 e){}//用|或,此种用得少
(3)try{}catch(RuntimeException e){}//多态,即运行时异常-输入异常全进该异常。

4.throws
受检异常处理方法
1.try catch,跟普通异常一样
2.throws抛出:当异常原因跟方法无关,原因在传入参数错误时,可以抛出。

异常是否抛出应该站在哪个角度思考?
throws:如果是因为传参导致异常,应该通过throws将异常抛出去。
原则是谁调用,谁处理。但是无法抛出给JVM,抛给JVM就会程序崩溃。
try catch:举一个例子,当throws抛出异常给调用方法的对象时,因为是该对象传参错误导致的异常,那么应该try catch该异常,在这里解决异常。

5.throw

throw关键字表示在程序中人为的抛出一个异常,因为从异常处理机制来看,所有的异常一旦产生之后,实际上抛出的就是一个异常类的实例化对象,那么此对象也可以由throw直接抛出。

当用户输入年龄越界时,此时系统不会产生异常,但是我们需要通知用户此行为是异常的。可以人为throw一个异常。
public void setAge(int age){
if(age<0 || age>180){
RuntimeException e = new RuntimeException(“年龄不合理”);
throw e;
}else{
this.age = age;
}
}
//注意:很少这样人为抛异常。

6.自定义异常(了解)

代码
AgeRuntimeException extends RuntimeException{//这是非受检异常的子类

public AgeRuntimeException(String message){//构造方法重写
super(message);
}

}

AgeException extends Exception{}//这是受检异常的子类自定义异常
受检查的异常必须明确抛出,所以这个自定义异常在编译时也会红线提示,明确抛出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值