1.Error与Exception的区别:
相同点:Error(错误)和Exception(异常)都是Throwable类的子类
不同点:
1.Error表示VM无法解决或恢复困难的严重问题,
例如:OutOfMemoryError(内存不足)和StackOverflowError(堆栈溢出)
Exception表示程序本身可以处理的异常
例如:NullPointerException(空指针异常)和ArrayIndexOutOfBoundsException (数组下标越界异常)。
2.Exception可以通过try-catch块来处理,而Error通常无法处理
2.你所遇到的Exception(或RuntimeException运行时异常)有哪些(例举出5条):
Exception是指在程序运行期间可能会发生的执行异常,需要将可能会出现相应问题的代码进行异常捕获,并处理。
- NullPointerException(空指针异常):当应用程序试图在需要对象的地方使用 null 时,抛出该异常。
- ArrayIndexOutOfBoundsException(数组下标越界异常):当应用程序试图访问数组的无效索引时,抛出该异常。
- ClassCastException(类型转换异常):当试图将对象强制转换为不是实例的子类时,抛出该异常。
- ArithmeticException(算数异常):当出现异常的运算条件时,抛出该异常,例如除数为零。
- InputMismatchException(输入类型不匹配异常):当一个变量或者对象的类型与所期望的类型不匹配时,会抛出类型不匹配异常。
- ClassNotFoundException(类不能找到异常):当应用程序试图根据字符串名称加载类时,找不到与字符串名称对应的类的时候,抛出该异常。
- IOException(输入输出流异常):当 Java IO 中出现问题时,抛出该异常。
- FileNotFoundException(文件不能找到异常):当应用程序试图打开指定路径名表示的文件失败时,抛出该异常。
其中前六个为运行时异常
常见的Error包括(了解):
Error是Java中的一种非受检异常,通常表示代码运行时JVM出现问题。
- OutOfMemoryError:内存不足错误;
- StackOverflowError:栈溢出错误;
- NoClassDefFoundError:类定义错误;
- UnsatisfiedLinkError:本地方法库链接错误;
- ExceptionInInitializerError:静态初始化器错误;
- AssertionError:断言错误;
- LinkageError:链接错误。
这些错误通常表示JVM出现了无法恢复的问题,因此应用程序不应该去处理此类错误。按照Java惯例,我们是不应该实现任何新的Error子类的
3.Exception中的checked exception与unchecked exception区别(or 编译时异常与运行时异常(RuntimeException)的区别):
- checked exception(编译时异常)是指在编译时就能被检测到的异常,必须在代码中进行处理,否则编译不通过。例如IOException、SQLException等。
- unchecked exception(运行时异常)是指在编译时无法被检测到的异常,通常是由程序逻辑错误引起的,例如NullPointerException、ArrayIndexOutOfBoundsException等。这些异常不需要在代码中进行处理,但是如果不进行处理,程序会在运行时抛出异常并终止。编译时不强制要求处理,但一般都进行处理。
4.异常处理所遇到的关键字:
http://t.csdnimg.cn/bQAPp