throw try catch java_Java throw throws try...catch区别

java里的异常多种多样,这是一种非常有用的机制,它能帮助我们处理那些我们未知的错误,在java里,关于异常的有throw throws,还有一个try catch 程序块。接下来我们挨个看看这几个的作用。

1.throw

throw 就是抛出一个异常,并获取这个异常的引用,这个异常会被抛到外部的环境,由外部环境进行处理

class A{

public void func() throws Exception{

throw new Exception();

}

}

这里抛出了一个Exception,Exception是throwable的子类,是所有异常的基类。与此同时,throwable还有另一个子类,也就是Error。

这里会把Exception这个引用抛到外部环境中去处理。

2.throws

那我们就不得不说一下throws,其实throws并不是抛出一个实际的Exception而是一个异常声明,它声明这个方法可能会抛出一个异常,注意是可能,所以在没有异常的情况下也是可以用throws的,而throws本身的作用也是用来提高程序的健壮性,反过来,如果这个方法的的确确的有一个异常,那么编译器会强制让你加上throws这个异常声明。

通常throws是写在参数列表的后面,这样就表明这个方法有可能会抛出一个异常

class A{

public void func() throws Exception{

throw new Exception();

}

public void g() throws Exception{

}

}

3.try...catch

当我们在其环境中调用func 和 g的时候,编译器会通知我们需要用一个Try catch程序块来处理这个异常。

这个程序块分两块,第一块是try{} ,第二块是catch(exception的引用){}

try这个程序块很有意思,因为它的名字很易懂,就是尝试,尝试能不能正常的走完整个作用域,如果不能则抛出一个异常。所以我们在try块里经常放上可能会抛出异常的程序段。

而catch恰好就是处理try里抛出来的异常,其中catch的参数列表接收的是一个异常的引用,是throw抛出来的异常的引用,这样我们就可以得到这个异常的对象,倒不如说我们是得到来了这个异常对象的引用,因为在java里,通常我们也只能通过引用来操纵对象。

PS:当 throw new RuntimeException的时候,不用throws

public class Main {

public static void main(String[] args){

A a = new A();

try{

a.func();

a.g();

}

catch(Exception e){

System.out.println("捕获了一个异常");

}

}

}

我们捕获了func 的异常,因为我们明确的指明func 会抛出一个异常throw new Exception();所以我们这里也会捕获到,并去处理它,所以运行起来我们会看到控制台上会打印“捕获了一个异常”。

尽管g()没有抛出任何的异常,编译器还是要求我们要用try catch把它括起来,是因为它拥有一个throws 异常说明。

相信java的异常处理机制会让你的程序健壮性提高很多

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值