Java学习记录|异常处理

try-catch的简要介绍

开发环境出现Exception异常,代码不会往下继续执行,软件崩溃
解决办法:

  1. 避免异常的出现

比如加入判断

  1. 出现异常怎么办

异常处理try catch,把容易出错的代码放在try里面,catch用来捕捉异常
Java里面把所有的异常封装成exception类,所有异常类继承至exception

使用try-catch语句之后,try语句内部出现异常时,try内部之后的部分不会执行,但try之外的程序会继续执行;try语句内部正常运行时,catch语句不会执行

public static void main(String[] args) {
        try{
            ArrayList al=new ArrayList();
            System.out.print(al.get(0));
        }catch(IndexOutOfBoundsException e){
            e.printStackTrace();
        }        
        System.out.print("后面的程序");
    }

其他语法的介绍

  • 以下为例

问题:异常出现之后后面程序没有执行

  public static void main(String[] args) {

        try{
            ArrayList al=new ArrayList();
            al.add(100);//只能放int类型的数据
            al.add(12);
            al.add(122);
            al.add(32);
            
            for(int i=0;i<al.size();i++){
                System.out.print((String)al.get(i));//这句有错误,不能强制转换成String类型,异常没有处理,因为后面程序没有进行
            }//未处理原因:catch里面只捕捉了IndexOutOfBoundsException这个异常

        }catch(IndexOutOfBoundsException e){
            e.printStackTrace();
        }

        System.out.println("后面的程序");

    }

解决办法:
加一个catch

        catch(ClassCastException e){
            System.out.print("出现强制类型转换的异常");
        }

结果:
“后面的程序”继续执行
Q:如何使用一个catch语句捕捉所有异常?
A :直接catch Exception

 public static void main(String[] args) {

        try{
            ArrayList al=new ArrayList();
            al.add(100);//只能放int类型的数据
            al.add(12);
            al.add(122);
            al.add(32);

            for(int i=0;i<al.size();i++){
                System.out.print((String)al.get(i));//有错误,不能强制转换成String类型,异常没有处理,因为后面程序没有进行
            }//未处理原因:catch里面只捕捉了IndexOutOfBoundsException这个异常

        }catch(Exception e){
           e.printStackTrace();
        }
        System.out.println("后面的程序");

    }
  • finally语句

必须执行(不管try语句是否出现异常)

public static void main(String[] args) {

        try{
            ArrayList al=new ArrayList();
            al.add(100);//只能放int类型的数据
            al.add(12);
            al.add(122);
            al.add(32);

            for(int i=0;i<al.size();i++){
                System.out.print((String)al.get(i));
            }

        }catch(Exception e){
           e.printStackTrace();
        }finally{
            System.out.print("finally");
        }
        System.out.println("后面的程序");

    }

输出:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
	at ch3.ExceptionDemo.main(ExceptionDemo.java:16)
finally后面的程序

学习来源:【bilibili siki学院】

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值