Exception和Error有什么区别
- Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。
- Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。
- Error 是指 java 运行时系统的内部错误和资源耗尽错误,不便于也不需要捕获,常见的比如 OutOfMemoryError 之类,都是 Error 的子类。
Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 如果出现 RuntimeException,那么一定是程序员的错误.
检查异常 CheckedException:一般是外部错误,这种异常都发生在编译阶段,Java 编译器会强制程序去捕获此类异常,即会出现要求你把这段可能出现异常的程序进行 try catch
Throw 和 throws 的区别:
位置不同
- throws 用在函数上,后面跟的是异常类,可以跟多个;而 throw 用在函数内,后面跟的是异常对象。
功能不同:
-
throws 用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;throw 抛出具体的问题对象,执行到 throw,功能就已经结束了,跳转到调用者,并将具体的问题对象抛给调用者。也就是说 throw 语句独立存在时,下面不要定义其他语句,因为执行不到。
-
throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw 则是抛出了异常,执行 throw 则一定抛出了某种异常对象。
-
两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
异常代码格式
复制代码
1
2
3
4
5try{ }catch(异常类){ }finally{ }
自定义异常类
复制代码
1
2
3
4
5
6public class MyException extends Exception { public MyException(String s) { super(s); } }
写方法时,在可能会发生异常的地方抛出异常
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16public class A { public void aaa() throws MyException { int i = 0; while (true) { if (i == 10) { System.out.println(i); throw new MyException("aaaaa"); } i++; } } }
调用该方法,捕获它抛出的异常
复制代码
1
2
3
4
5
6
7
8
9
10
11public class TestClass { public static void main(String[] args) { A a = new A(); try { a.aaa(); } catch (MyException e) { e.printStackTrace(); } } }
最后
以上就是俏皮茉莉最近收集整理的关于Exception和Error有什么区别的全部内容,更多相关Exception和Error有什么区别内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复