今天写了下面的代码A:
然后是代码B:
为什么会这样:首先明白Exception是包含一部分的非运行时异常和全部的运行时异常,来张图更好理解:
除去RuntimeException以外的都是非运行时异常
然后要明白java中 非运行时异常必须要做处理否则编译不通过而运行时异常是没有强制要求去处理,处理异常的方式有两种一时try catch和throws(两种有什么区别不说了,还是说句吧,一个是方法本身处理异常,一个是将异常抛给调用者去处理)
最后就能理解代码AB了,在A中,方法里面catch的是Exception包含了运行时和非运行时异常,需要强制处理,我并未处理(这里的try catch我只是抓了第一个Exception,而throw的那个e是没有任何处理,所以编译不通过)
代码B更好理解,try catch的是运行时异常,处理与否没有关系。
另外补充一点throws和throw的区别:throw是具体抛出异常的动作,throws是声明方法可能抛出的异常,仅仅是声明而已。
版权声明:本文为ALearrring原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。