Java中异常处理的两种方式

  • try-catch-finally 程序员在代码中国捕获发生的异常,自行处理

try{

可能发生异常的代码块}catch(Exception e){

系统将其封装成Exception对象 ,传递给catch。也可以在这里增加自己的业务逻辑

}finally{

不管是否有异常发生,finally代码块一定会执行

}

注意事项:

如果在try中发生异常了,则其后面的语句不会执行,直接进入catch中

package Learn;
public class Test {
    public static void main(String[] args) {
  String name="鲁迅";
  try{
  int num=Integer.parseInt(name);
  System.out.println("我又没有输出");
  }
  catch (Exception e){
      System.out.println("发生异常了");
  }finally {
      System.out.println("运行结束");
  }
    }
}

try{}finaly{}也可以直接使用,但是程序会崩溃。并且finaly中语句会执行,但是其后面的程序并不会执行。

  • throws处理机制

我们假设jvm虚拟机调用main方法,而main方法调用了f1方法,f1调用f2方法。如果f2方法有异常,那么在f2中可以用try-catch方法自己处理,也可以throws抛出给f1方法,同理f1也可以做出相同的操作,而方法如果一直往上抛出,最终给到了jvm虚拟机会直接打印出来异常信息,进而中断程序。

在Java中,如果我们没有用操作区管理异常,则默认会一直向上抛出,直到jvm,在下面中我们可以看到f1中存在的异常抛出给了main方法,main方法捕捉并且进行处理。

package Learn;
public class Test {
    public static void main(String[] args) {
        AA aa = new AA();
        try {
            aa.f1();
        }catch (ArithmeticException arithmeticException){
            System.out.println("有错误");
        }

    }
}
class AA{
    public void f1() throws ArithmeticException {
        int a=10/0;
    }
}

细节问题:

对于问题中的编译异常必须进行处理,而运行异常则有默认的处理机制

对于子类重写父类方法时,子类抛出的异常必须是父类异常的子类型或者相同

class AA{
    public void f1() throws Exception {
        int a=10/0;
    }
}
class BB extends AA{
    @Override
    public void f1() throws ArithmeticException{
        
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值