关于Java异常的疑问
问题描述
众所周知下面的代码编译不过:
public class test{ private static void haha(){throw new Exception(); } public static void main(String[] args) {haha();return; }}
javac test.java
未报告的异常错误Exception; 必须对其进行捕获或声明以便抛出。
但是下面的代码没有进行错误处理,却能够通过编译:
public class test{ public static void main(String[] args) {String s = new String('test');System.out.println(s.substring(0,6));return; }}
javac test.javajava test
Exception in thread 'main' java.lang.StringIndexOutOfBoundsException: String index out of range: 6at java.lang.String.substring(Unknown Source)at test.main(test.java:4)
请问这是什么原因?
问题解答
回答1:StringIndexOutOfBoundsException继承了RuntimeException,不需要显式地声明处理。
回答2:第一个抛出的是Exception是checked异常,也就是编译器异常,所以必须手动处理。第二个抛出的StringIndexOutOfBoundsException是unchecked异常,运行时异常,所以不需要手动处理
相关文章:
1. PHP中的$this代表当前的类还是方法?2. javascript - vue2.0中使用vue2-dropzone的demo,vue2-dropzone的github网址是什么??百度不到。3. html5 - 目前 公司App 嵌入H5页面 做个 手机支付功能 没有做过 所以 请求各位有经验的 给个思路4. IOS app应用软件的id号怎么查询?比如百度贴吧的app-id=4779278135. html - 这种错位的时间轴怎么布局,然后用css实现?6. javascript - avalon.js ms-on 事件绑定无效 ?7. java - 如图代码,Collection 类中的iterator()是抽象方法,为什么可以调用?8. 鼠标过导航标签时,无效果,请问如何查找问题9. java - spring-data Jpa 不需要执行save 语句,Set字段就可以自动执行保存的方法?求解10. java - butterknife怎么绑定多个view