error/exception/runtime exception区别
(1)java中的异常是什么?
异常指的是程序运行过程中出现的非正常情况或错误,当程序违反了语义规则时,jvm就会将出现的错误表示为一个异常抛出。在java中,一切皆对象,异常也是,它被当作一个对象,可以在try块中进行捕获,使用catch进行处理,对于任何情况都要执行的代码,放在finally代码块中。
上面提到的语义规则有两大类,一个是javaAPI中定义好的,还有一种是自定义的(所有异常类都必须是Trowable的子类)。
(2)java中异常有哪几种类型
- 首先异常类的父类是Throwable。
- Throwable类有两大子类:Error,Exception
- Error:错误
- 程序在运行过程中发生了非常严重的错误,并且该错误是不可恢复的。
- 由于类错误是jvm层的错误,因此,此种错误会导致程序的终止运行
- 编译器不会检查程序中是否有错误
- Exception:异常
- 异常是可恢复的
- Exception可以分为CheckedException和RuntimeException
- checkedException(检查异常):
- 最常见的就是IO异常,和sql异常。这种异常通常发生的编译阶段
- 编译器会强制要求程序员去捕获此类异常
- 异常的发生不会导致程序出错
- 对异常处理之后程序还能继续运行
- 程序依赖于不可靠的外部条件
- RuntImeException(运行时异常):
- 程序在运行的时候发生的异常
- 编译器没有去强制对其进行捕获并处理
- 如果不对这类异常进行处理,jvm将会对其处理。例:空指针异常
- 出现运行时异常,系统会将异常向上抛出,知道遇到处理代码为止。
- 如果没有就跑到最上层(main/run),抛出之后,程序也就退出了
(3)finally中的代码什么时候执行?
- 不管try中是否发生异常,finally都会执行(以下几种情况除外)
- try-finally,try-catch-finally代码中的return语句优先级高于代码块外面的,也就是try-finally,try-catch-finally代码块中的return将覆盖其他的return语句
(4)finally中的代码什么情况不会被执行?
- finally对应的try-catch-finally之前有运行时异常未被处理
- finally之前强制退出程序(System.exit(0))
- finally之前调用return结束函数的运行
error/exception/runtime exception区别的更多相关文章
- 异常 - Error / Checked Exception / Runtime Exception
https://www.cnblogs.com/loveis715/p/4596551.html
- Checked Exception与Runtime Exception 的区别
Java里有个很重要的特色是Exception ,也就是说允许程序产生例外状况.而在学Java 的时候,我们也只知道Exception 的写法,却未必真能了解不同种类的Exception 的区别. 首 ...
- Throwable、Error、Exception、RuntimeException 区别 联系
1.Throwable 类是 Java 语言中所有错误或异常的超类.它的两个子类是Error和Exception: 2.Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获 ...
- Java中Error和Exception的异同以及运行时异常(Runtime exception)与检查型异常(checked exception)的区别
一:Error和Exception的基本概念: 首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕 ...
- 理解error和exception之间的区别
很多程序员不清楚error和exception之间的区别,这区别对于如何正确的处理问题而言非常重要(见附1,"简要的叙述error和exception").就像Mary Campi ...
- java基础面试题:运行时异常与一般异常有何异同?error和exception有什么区别? 请写出你最常见到的5个runtimeexception?
Throwable是Java错误处理的父类,有两个子类:Error和Exception. Error:无法预期的严重错误,导致JVM虚拟机无法继续执行,几乎无法恢复捕捉的 Exception:可恢复捕 ...
- 运行时异常与受检异常有何异同、error和exception有什么区别
1.运行时异常与受检异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生.受检异常跟程序 ...
- java中Error与Exception有什么区别
Error类和Exception类都继承自Throwable类. Error的继承关系: java.lang.Object java.lang.Throwable java.lang.Er ...
- Java常见异常(Runtime Exception )小结(转)
原文链接:Java常见异常(Runtime Exception )小结 Java异常体系结构呈树状,其层次结构图如图 1所示: 本文重在Java中异常机制的一些概念.写本文的目的在 ...
随机推荐
- [iOS]深拷贝/浅拷贝区别
来点鸡汤: // 所谓拷贝 就是在原有的对象的基础上产生一个新的副本对象.有两点原则: // 1. 改变原对象的属性和行为不会影响副本对象 // 2. 改变副本对象的属性和行为不会影响原对象 ...
- html5 canvas画布上合成
source-over 默认.在目标图像上显示源图像. source-atop 在目标图像顶部显示源图像.源图像位于目标图像之外的部分是不可见的. source-in 在目标图像中显示源图像.只有目标 ...
- 【CodeForces】925 C.Big Secret 异或
[题目]C.Big Secret [题意]给定数组b,求重排列b数组使其前缀异或和数组a单调递增.\(n \leq 10^5,1 \leq b_i \leq 2^{60}\). [算法]异或 为了拆位 ...
- iOS设置tableViewCell之间的间距(去掉UItableview headerview黏性)
经常在项目中遇到自定义cell的情况,而且要求cell之间有间距,但是系统没有提供改变cell间距的方法,怎么办? 方法1:自定义cell的时候加一个背景View,使其距离contentView的上下 ...
- CSUST 1506 ZZ的计算器 模拟题
题目描述:实现一个计算器,可以进行任意步的整数以内的加减乘除运算,运算符号只有+.-.*./,求出结果. 解题报告:一个可以说麻烦的模拟题,我们可以这样,输入以字符串的形式输入,然后将输入先做一遍预处 ...
- ZYNQ. GPIO
GPIO General Purpose I/O ,网上能找到很多关于znyq gpio 的文章. 分类:EMIO .MIO .AXI_GPIO 硬件系统 MIO和EMIO是在zynq核中配置的,MI ...
- mydumper安装及使用
mydumper 官网:https://launchpad.net/mydumper 安装方式: 1.yum install glib2-devel mysql-devel zlib-devel pc ...
- c# XML读取
System.Xml 命名空间 https://msdn.microsoft.com/zh-cn/library/gg145036(v=vs.110).aspx 一.读取 1.通过 XmlDocume ...
- 一个无锁消息队列引发的血案(五)——RingQueue(中) 休眠的艺术
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...
- 安装numpy只需一步简单的方法
因为最近在搞机器学习,涉及到python,因为我的python版本还是windoes下的2.7版本,在学习K临近算法的时候,需要安装numpy函数,下面就把自己的安装方法写下来 1:登录网址 htt ...