您的位置:首页技术文章
文章详情页

关于Java异常的疑问

【字号: 日期:2024-01-31 09:38:16浏览:40作者:猪猪

问题描述

众所周知下面的代码编译不过:

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异常,运行时异常,所以不需要手动处理

标签: java
相关文章: