关于 java Exception 疑问

问题:
为什么图一的程序没有错误最后 Console显示结果是 Fehler, 而图二的程序不能运行呢?
求高手解答,最好附加相应例子,感激不尽!
最新回答
人生如梦梦如烟

2026-10-26 08:55:22

图示例子本来就是教你区别异常的类型:
Exception表示明确要求使用者进行检查的代码。既然要求你检查,前提是被调用的代码明确声明了会抛出这种异常。
图2中b方法抛出一个非运行时异常,而没有声明。所以不能编译。JLS要求所有非运行时异常必须声明。意思是告诉调用者,我可能会丢个惊喜给你,你必须处理。
处理的方法有两种:
1,继续声明这种类型的异常,然后直接调用,不管。
2,逮住这个鬼东西,收拾它。

图1中的算数异常属于运行时异常,可理可不理。是否声明都大滚可以。
抓了,不会再向上的调用栈进行滚团余传递。不抓,一般是当前线程的默认处理,线程停止或凯运行。
注意:图2中catch(Exception)将逮住所有异常,不管是普通的Exception还是RuntimeException。

另外:虽然RuntimeException也是Exception的子类。但是编译器会明确区分。实际上这是一个设计错误。

不要去听别人的翻译:什么检查异常,已检查异常。纯粹属于语文没有学好的人胡乱翻译。