Java Exception和Error的差别
Java中异常的抽象类是Throwable,在此基础上。派生出两大类:Error和Exception。
Error是程序中的严重错误,不应该用try…catch包括。Javadoc的说明例如以下:
An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions.
常见的Error有:AssertionError、OutOfMemoryError、StackOverflowError。
Exception分两类:Checked Exception和Unchecked Exception。
Unchecked Exception的基类是RuntimeException。全部继承自RuntimeException的Exception都属于Unchecked Exception, 如:NullPointerException、ArrayIndexOutOfBoundsException。
Checked Exception直接继承自Exception,全部不继承RuntimeException的Exception都属于Checked Exception,如:FileNotFoundException。
Checked Exception和Unchecked Exception都能够用try…catch包括。当中,Checked Exception在编译时检查是否有想要的catch处理,因此必要有try…catch包括,或者方法签名处抛出相应的异常。而Unchecked Exception在运行时推断,所以不一定要try…catch包括。并且,Unchecked Exception往往是程序本身存在bug,一般不catch这种错误。
备注1:
在try中运行return语句,依旧会运行finally语句块。除非在try语句中结束JVM进程(system.exit(0))
public class Hello{
public static void main(String[] args){
try{
System.out.println("in try");
return;
}catch(Exception e){
}finally{
System.out.println("finally");
}
System.out.println("end");
}
}
//输出
in try
finally
备注2:
不要在finally语句块调用return。否则的话。在try语句块中抛出的异常无法被调用者捕获,例如以下:
try {
doSomething();
System.out.println("No Exception Caught!");
} catch (RuntimeException e) {
System.out.println("got it.");
}
}
public static void doSomething() {
try {
throw new RuntimeException();
} finally {
return;
}
}
//输出
No Exception Caught!
备注3:
throw与throws的差别:
throw是在语句块。程序猿主动抛出一个异常。
throws是在方法的签名处,说明该方法可能抛出的异常。当有多个异常抛出时,用逗号分隔。
备注4:
从JDK7開始,同一个try相应的多个catch能够写在一起。
Java Exception和Error的差别的更多相关文章
- Java Exception 和Error
(事先声明:该文章并非完全是我自己的产出,更多的是我个人在看到资料后通过理解并记录下来,作为自己阅读后的一个笔记:我现在试图对自己多年工作中的知识点做一个回顾,希望能融会贯通) (此文参考<Ja ...
- Java Exception 和Error有什么区别?
① Exception 和Error 都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型. ② Exception和Error ...
- 面试官:小伙子,你给我说一下Java Exception 和 Error 的区别吧?
前言 昨天在整理粉丝给我私信的时候,发现了一个挺有意思的事情.是这样的,有一个粉丝朋友私信问我Java 的 Exception 和 Error 有什么区别呢?说他在面试的时候被问到这个问题卡壳了,最后 ...
- nested exception is java.lang.RuntimeException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'daoSupport': ...
- java 异常处理 Throwable Error 和Exception
Java异常类层次结构图: 异常的英文单词是exception,字面翻译就是“意外.例外”的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误. 比如使用 ...
- Kafka中错误:Unrecognized VM option ‘UseCompressedOops’ Error: Clould not create the Java Vritual Machine. Error: A fatal exception has occurres . Program will exit.
错误的描述: 在kafka安装目录下,执行 $ bin/zookeeper-server-start.sh config/zookeeper.properties & Unrecognized ...
- Java的Exception和Error面试题10问10答
在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...
- 谈一谈Java中的Error和Exception
Error和Exception的联系 继承结构:Error和Exception都是继承于Throwable,RuntimeException继承自Exception. Error和RuntimeExc ...
- java virtual machine launcher Error:Could not create the Java Virtual Machine. Error:A Fatal exception has occurred,Program will exit.
Error:Could not create the Java Virtual Machine. Error:A Fatal exception has occurred,Program will e ...
随机推荐
- 1112 KGold
给出N个人在0时刻的财富值M[i](所有人在0时刻的财富互不相等),以及财富增长速度S[i],随着时间的推移,某些人的财富值会超越另外一些人.如果时间足够长,对于财富增长最快的人来说,他的财富将超越所 ...
- First-class citizen
In programming language design, a first-class citizen (also type, object, entity, or value) in a giv ...
- 在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)
前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章: 手把手教你如何新建scrapy爬虫框架的第一个项目(上) 手把手教你如何新建s ...
- 洛谷 P1541 乌龟棋 (四维费用背包)
一开始直接用01背包 后来发现这个物品和位置有关. 也就是价值不是固定的 后来看了题解 看了卡片最多就4 所以这是一个四维费用的背包, 每一维是卡片的数量 价值就是当前的位置的价值. 但是与常规的背包 ...
- 洛谷——P1428 小鱼比可爱
https://www.luogu.org/problem/show?pid=1428 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从 ...
- Qt 3D教程(二)初步显示3D的内容
Qt3D教程(二)初步显示3D的内容 前一篇很easy,全然就没有牵涉到3D的内容,它仅仅是我们搭建3D应用的基本框架而已,而这一篇.我们将要利用它来初步地显示3D的内容了! 本次目的是将程序中间的内 ...
- mysql-增删改数据
一.增加操作 INSERT用来插入或添加行到数据库表的.插入用以下几种方式: 1.插入完整的行 insert into customers values(null,'Pep E,LaPew','100 ...
- android JNI 一维数组、二维数组的访问与使用
在JNI中访问JAVA类中的整型.浮点型.字符型的数据比较简单,举一个简单的例子,如下: //得到类名 jclass cls = (*env)->GetObjectClass(env, obj) ...
- [Codeforces Round #194 (Div. 2)] Secret 解题报告 (数学)
题目链接:http://codeforces.com/problemset/problem/334/C 题目: 题目大意: 给定数字n,要求构建一个数列使得数列的每一个元素的值都是3的次方,数列之和S ...
- Kali linux 2016.2(Rolling)里Metasploit的OpenVAS
不多说,直接上干货! 关于OpenAVS的概念,我这里不多赘述. 前提得,大家要先安装好OpenVAS!!! 我们都知道,BT5中已经预先安装好了OpenVAS网络漏洞扫描工具,我们只需进行一些配置即 ...