3.Java基础——异常处理篇

Java知识总结——异常处理

异常是在程序中导致程序中断运行的一种指令流。
异常(Exception):一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。

异常分类
	受检异常(是指在运行时受检查的异常,编译器提供红线警告的异常。)
	非受检异常(是指运行时不受检查的异常,在编写代码时,编译器不提供红线警告的异常,
记住RuntimeException就行。

处理异常

 try{
 	// 有可能发生异常的代码段
  }catch(异常类型1 对象名1){
    // 异常的处理操作 
  }catch(异常类型2 对象名2){
    // 异常的处理操作
  } ... 
  finally{
   //必然执行的异常统一处理出口
   // 无论是否发生异常,finally必然执行,除非程序执行退出命令:System.exit();
   }

try+catch的处理流程
  1、 一旦产生异常,则系统会自动产生一个异常类的实例化对象。 
  2、 那么,此时如果异常发生在try语句,则会自动找到匹配的catch语句执行,如果没有在try语句中,则会将异 常抛出. 
  3、 所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功,则表示由此catch进行处理。

注意:如果在try代码块中,基本数据类型和引用类型赋值输出是两种情况。

基本数据类型情况:
public class Text {
    public static void main(String[] args)  {
            int b=hello();
        System.out.println(b);
    }
    public static int hello(){
        int  a = 10;
        try{
            return a;       //捕获异常
        }catch (Exception e){

        }finally {

            a = 20;
        }
        return a;
    }

}
输出结果:10
因为在hello方法中,已经定义了a=10,存储于栈中.此时try代码块进行的准备动作是新生成备份数据10,并且最后返回的也是新生成的备份数据,finall代码块中的a=20,虽然改变了a的值,也不会返回了。

在这里插入图片描述

引用数据类型情况
	因为是引用数据类型,备份的是地址,虽然改变的finally中的值改变,但是备份的地址不变,
返回指向的还是原地址,最后输出则是finally代码块中的新的值。

异常抛出

throws主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。
格式:返回值 方法名称()throws Exception{ }

异常是否应该抛出?

如果是因为传参导致,可以通过throws将异常抛出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值