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的差别的更多相关文章

  1. Java Exception 和Error

    (事先声明:该文章并非完全是我自己的产出,更多的是我个人在看到资料后通过理解并记录下来,作为自己阅读后的一个笔记:我现在试图对自己多年工作中的知识点做一个回顾,希望能融会贯通) (此文参考<Ja ...

  2. Java Exception 和Error有什么区别?

    ① Exception 和Error 都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型. ② Exception和Error ...

  3. 面试官:小伙子,你给我说一下Java Exception 和 Error 的区别吧?

    前言 昨天在整理粉丝给我私信的时候,发现了一个挺有意思的事情.是这样的,有一个粉丝朋友私信问我Java 的 Exception 和 Error 有什么区别呢?说他在面试的时候被问到这个问题卡壳了,最后 ...

  4. 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': ...

  5. java 异常处理 Throwable Error 和Exception

    Java异常类层次结构图:       异常的英文单词是exception,字面翻译就是“意外.例外”的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误. 比如使用 ...

  6. 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 ...

  7. Java的Exception和Error面试题10问10答

    在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...

  8. 谈一谈Java中的Error和Exception

    Error和Exception的联系 继承结构:Error和Exception都是继承于Throwable,RuntimeException继承自Exception. Error和RuntimeExc ...

  9. 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 ...

随机推荐

  1. 关于CAS操作

    在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问题. (2 ...

  2. css 遮照镂空效果

    实现这个效果有以下几种方式.(欢迎指出不足之处!!!)  一:最简单最粗暴的方法!截图! 实现原理:先截一张图片,然后写一个遮罩层,再把图片放上去就可以了! 过程过于简单,就别写代码跟截图效果了! 优 ...

  3. fwupdate-efi 与 grub2-common 冲突

    在CentOS-7Minimal系统中使用命令如下命令yum groupinstall -y "GNOME Desktop"安装 图形界面时提示:fwupdate-efi 与 gr ...

  4. 紫书 习题 11-15 UVa 1668 (图论构造法)

    参考了http://www.bubuko.com/infodetail-1276416.html 首先是逆向思维, 向把每条边看作一条路径, 然后再去合并 然后我们讨论怎么样合并时最优的 我们讨论当前 ...

  5. 如何查询mysql中是否表被锁

    可直接在mysql命令行执行:show engine innodb status\G;(只能通过cmd或者shell登录mysql) 查看造成死锁的sql语句,分析索引情况,然后优化sql然后show ...

  6. 破解者是如何篡改游戏内数值的,揭秘Android手游破解全过程

    由于Android系统的开放性,让人人都是开发者成为可能,也正因如此,手机APP遭受破解和盗版问题长期存在,且愈演愈烈.尤其是手游 行业,如刀塔传奇.植物大战僵尸.2048等知名游戏被破解的案例不胜枚 ...

  7. python Flask 学前班

    0.Flask简单介绍     Flask是一个用Python编写的轻量级的Web应用框架.本文第一部分将简单解说Flask的安装,接着展示一个Flask的样例,第一个样例非常easy但也存在缺陷-- ...

  8. ural 1143. Electric Path(凸包上最短哈密顿路径)

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1143 题意:逆时针给一个凸包的n(n<=200)个顶点坐标,求一个最短哈密顿路径的 ...

  9. ACdream 1139(Sum-逆元)

    J - Sum Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatu ...

  10. rest_framework 权限功能

    权限: 问题:不用视图不用权限可以访问 基本使用 写上一个权限类 创建utils 中 permission.py文件 class SvipPermisson(object): message = &q ...