本人java初学者,最近在复习java异常体制时,在网上看到许多同学关于throws和throw这两个关键字不理解,在这里我来说说我的看法,为大家的学习提供一点微薄之力。
一、throws关键字
首先,我们从这个单词就可以看出来,这是个复数形式的词,那么意味着它表示的肯定是多个异常的处理,那么为什么会产生多个异常呢?原因在于我在写一个方法时,我的方法内部调用了java中的一些已经存在的方法,这些方法在使用时可能会产生一些问题,比如下图,我在我的Test方法中使用到了FIleInputStream的构造方法,结果显示有异常,为什么呢?因为这个C盘根目录下可能根本就没有temp.txt这个文件,会产生异常!所以它需要你自己trycatch来捕获这个异常。
或者!你也可以使用throws这个关键字来抛给JVM,让它自己处理,我们不需要管这个异常,并且你也可以抛出多个方法可能存在的异常 这就是为什么它叫做throws的原因!
相信从这里大家应该能够真正理解了throws这个关键字的用法,其实在这里大家也就会自然而然的明白throw是用来干嘛的了,使用throws是因为调用这个方法时,最开始写这个方法的时候就抛出了异常,所以我需要处理,那么异常是如何被抛出的呢?那么这里就使用到了throw关键字。
二、throw关键字
上面已经提到了为什么使用throw,其实很简单,我在仔细思考写了一个方法之后,想到可能这个方法可能有些地方是不能使用的,比如你给我传进来的参数不能为零,但是你怎么防止别人不会传进来这个零参数呢?那么就需要new出一个自己定义的Exception(这里可能会需要自定义异常)并且将其throw出,那么同理,既然这已经就是一个异常了,你当然需要将这个方法trycatch,也可以在方法上将其throws!!,那么当别人使用你这个方法时!编译器就会提示这里有异常!你需要捕获!!那么就是使用throws来捕获!这就是throw的用法!
总结:最后提一点,使用throws关键字来处理异常其实就是不对异常处理,交给JVM,那么当另一个程序使用此方法时,同样也可以将其throws抛出,但是并不建议这种方法,最好是将其trycatch处理,这样可以更好的增强代码的健壮性。
以上就是我对于throws和throw的些许理解,谈不上深入研究,只为帮助与那些像我一样的java初学者更好的学习和理解,如有错误,请积极指出,本人不胜感激。