关于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. javascript - js数组键名为何不能用变量?我想像PHP那样使用变量作为关联数组键名该怎么做?2. html5 - bootstrap修改样式的问题3. javascript - 在 model里定义的 引用表模型时,model为undefined。4. java - 如图,jsp页面的form中的action是怎么映射到这个位置的?为什么不写dynUser就可以映射到save?5. mysql - 求一个sql语句,比较简单。6. css - 关于HTML中width和height的疑问(这个提问的标题不好起)7. java - 接口中的成员变量怎么不是常量了?8. HTML5表单必填属性设置自定义验证消息?9. javascript - 清空Chrome缓存的疑问10. ruby-on-rails - 在安装RubyOnRails的时候出现问题

网公网安备