关于 java Exception 疑问
问题:为什么图一的程序没有错误最后Console显示结果是Fehler,而图二的程序不能运行呢?求高手解答,最好附加相应例子,感激不尽!...
问题:
为什么图一的程序没有错误最后 Console显示结果是 Fehler, 而图二的程序不能运行呢?
求高手解答,最好附加相应例子,感激不尽! 展开
为什么图一的程序没有错误最后 Console显示结果是 Fehler, 而图二的程序不能运行呢?
求高手解答,最好附加相应例子,感激不尽! 展开
展开全部
图示例子本来就是教你区别异常的类型:
Exception表示明确要求使用者进行检查的代码。既然要求你检查,前提是被调用的代码明确声明了会抛出这种异常。
图2中b方法抛出一个非运行时异常,而没有声明。所以不能编译。JLS要求所有非运行时异常必须声明。意思是告诉调用者,我可能会丢个惊喜给你,你必须处理。
处理的方法有两种:
1,继续声明这种类型的异常,然后直接调用,不管。
2,逮住这个鬼东西,收拾它。
图1中的算数异常属于运行时异常,可理可不理。是否声明都可以。
抓了,不会再向上的调用栈进行传递。不抓,一般是当前线程的默认处理,线程停止运行。
注意:图2中catch(Exception)将逮住所有异常,不管是普通的Exception还是RuntimeException。
另外:虽然RuntimeException也是Exception的子类。但是编译器会明确区分。实际上这是一个设计错误。
不要去听别人的翻译:什么检查异常,已检查异常。纯粹属于语文没有学好的人胡乱翻译。
Exception表示明确要求使用者进行检查的代码。既然要求你检查,前提是被调用的代码明确声明了会抛出这种异常。
图2中b方法抛出一个非运行时异常,而没有声明。所以不能编译。JLS要求所有非运行时异常必须声明。意思是告诉调用者,我可能会丢个惊喜给你,你必须处理。
处理的方法有两种:
1,继续声明这种类型的异常,然后直接调用,不管。
2,逮住这个鬼东西,收拾它。
图1中的算数异常属于运行时异常,可理可不理。是否声明都可以。
抓了,不会再向上的调用栈进行传递。不抓,一般是当前线程的默认处理,线程停止运行。
注意:图2中catch(Exception)将逮住所有异常,不管是普通的Exception还是RuntimeException。
另外:虽然RuntimeException也是Exception的子类。但是编译器会明确区分。实际上这是一个设计错误。
不要去听别人的翻译:什么检查异常,已检查异常。纯粹属于语文没有学好的人胡乱翻译。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询