我正在尝试查找JVM将抛出Exception而在Java代码中没有throw
语句的情况的详尽列表。当然,我们都熟悉NullPointerExceptions,例如:
Object o = null;
o.toString();
整数数学也可以在1/0
中引发ArithmeticException,并像在Integer i=null; i++;
中那样对空Integer开箱。
对于我眼前的问题,我不关心Error
和StackOverflowError
之类的OutOfMemoryError
情况,只关心Exception
的类型(尽管有错误列表)然后随时指出)。我也很高兴排除从Java调用任意本机代码的情况。谢谢。
另一种思考方式是-如果我看到这样的Stacktrace:
Exception in thread "main" java.lang.SomeException: Some Exception Message
at com.test.MyClass.main(MyClass.java:6)
然后我打开MyClass.java
,第6行 没有throw
语句-哪里有规范的异常可能原因列表?再次感谢。
答案 0 :(得分:4)
没有规范列表。原因如下:
throw
语句的情况下引发任何异常。尚未记录,并且会因Java版本而异。Unsafe.throwException
引发任何异常。以此类推。
请注意,3.和4.意味着有可能通过未在其签名中声明异常的方法抛出检查异常。
简而言之,可以在没有throws
语句的情况下抛出任何可能的异常 。
1-问自己:为什么这些信息会被实用使用?如果没有用,Java团队不会花时间创建和维护这样的列表。请注意,机械生产会很困难。