(1)java中的异常是什么?

  异常指的是程序运行过程中出现的非正常情况或错误,当程序违反了语义规则时,jvm就会将出现的错误表示为一个异常抛出。在java中,一切皆对象,异常也是,它被当作一个对象,可以在try块中进行捕获,使用catch进行处理,对于任何情况都要执行的代码,放在finally代码块中。

  上面提到的语义规则有两大类,一个是javaAPI中定义好的,还有一种是自定义的(所有异常类都必须是Trowable的子类)。

(2)java中异常有哪几种类型

  1. 首先异常类的父类是Throwable。
  2. Throwable类有两大子类:Error,Exception
  3. Error:错误
    1. 程序在运行过程中发生了非常严重的错误,并且该错误是不可恢复的。
    2. 由于类错误是jvm层的错误,因此,此种错误会导致程序的终止运行
    3. 编译器不会检查程序中是否有错误
  4. Exception:异常
    1. 异常是可恢复的
    2. Exception可以分为CheckedException和RuntimeException
    3. checkedException(检查异常):
      1. 最常见的就是IO异常,和sql异常。这种异常通常发生的编译阶段
      2. 编译器会强制要求程序员去捕获此类异常
      3. 异常的发生不会导致程序出错
      4. 对异常处理之后程序还能继续运行
      5. 程序依赖于不可靠的外部条件
    4. RuntImeException(运行时异常):
      1. 程序在运行的时候发生的异常
      2. 编译器没有去强制对其进行捕获并处理
      3. 如果不对这类异常进行处理,jvm将会对其处理。例:空指针异常
      4. 出现运行时异常,系统会将异常向上抛出,知道遇到处理代码为止。
      5. 如果没有就跑到最上层(main/run),抛出之后,程序也就退出了

(3)finally中的代码什么时候执行?

  1. 不管try中是否发生异常,finally都会执行(以下几种情况除外) 
  2. try-finally,try-catch-finally代码中的return语句优先级高于代码块外面的,也就是try-finally,try-catch-finally代码块中的return将覆盖其他的return语句

(4)finally中的代码什么情况不会被执行?

  1. finally对应的try-catch-finally之前有运行时异常未被处理
  2. finally之前强制退出程序(System.exit(0))
  3. finally之前调用return结束函数的运行

error/exception/runtime exception区别的更多相关文章

  1. 异常 - Error / Checked Exception / Runtime Exception

    https://www.cnblogs.com/loveis715/p/4596551.html

  2. Checked Exception与Runtime Exception 的区别

    Java里有个很重要的特色是Exception ,也就是说允许程序产生例外状况.而在学Java 的时候,我们也只知道Exception 的写法,却未必真能了解不同种类的Exception 的区别. 首 ...

  3. Throwable、Error、Exception、RuntimeException 区别 联系

    1.Throwable 类是 Java 语言中所有错误或异常的超类.它的两个子类是Error和Exception: 2.Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获 ...

  4. Java中Error和Exception的异同以及运行时异常(Runtime exception)与检查型异常(checked exception)的区别

    一:Error和Exception的基本概念: 首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕 ...

  5. 理解error和exception之间的区别

    很多程序员不清楚error和exception之间的区别,这区别对于如何正确的处理问题而言非常重要(见附1,"简要的叙述error和exception").就像Mary Campi ...

  6. java基础面试题:运行时异常与一般异常有何异同?error和exception有什么区别? 请写出你最常见到的5个runtimeexception?

    Throwable是Java错误处理的父类,有两个子类:Error和Exception. Error:无法预期的严重错误,导致JVM虚拟机无法继续执行,几乎无法恢复捕捉的 Exception:可恢复捕 ...

  7. 运行时异常与受检异常有何异同、error和exception有什么区别

    1.运行时异常与受检异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生.受检异常跟程序 ...

  8. java中Error与Exception有什么区别

    Error类和Exception类都继承自Throwable类. Error的继承关系: java.lang.Object  java.lang.Throwable      java.lang.Er ...

  9. Java常见异常(Runtime Exception )小结(转)

    原文链接:Java常见异常(Runtime Exception )小结 Java异常体系结构呈树状,其层次结构图如图 1所示:           本文重在Java中异常机制的一些概念.写本文的目的在 ...

随机推荐

  1. [iOS]深拷贝/浅拷贝区别

    来点鸡汤: // 所谓拷贝 就是在原有的对象的基础上产生一个新的副本对象.有两点原则: //   1. 改变原对象的属性和行为不会影响副本对象 //   2. 改变副本对象的属性和行为不会影响原对象 ...

  2. html5 canvas画布上合成

    source-over 默认.在目标图像上显示源图像. source-atop 在目标图像顶部显示源图像.源图像位于目标图像之外的部分是不可见的. source-in 在目标图像中显示源图像.只有目标 ...

  3. 【CodeForces】925 C.Big Secret 异或

    [题目]C.Big Secret [题意]给定数组b,求重排列b数组使其前缀异或和数组a单调递增.\(n \leq 10^5,1 \leq b_i \leq 2^{60}\). [算法]异或 为了拆位 ...

  4. iOS设置tableViewCell之间的间距(去掉UItableview headerview黏性)

    经常在项目中遇到自定义cell的情况,而且要求cell之间有间距,但是系统没有提供改变cell间距的方法,怎么办? 方法1:自定义cell的时候加一个背景View,使其距离contentView的上下 ...

  5. CSUST 1506 ZZ的计算器 模拟题

    题目描述:实现一个计算器,可以进行任意步的整数以内的加减乘除运算,运算符号只有+.-.*./,求出结果. 解题报告:一个可以说麻烦的模拟题,我们可以这样,输入以字符串的形式输入,然后将输入先做一遍预处 ...

  6. ZYNQ. GPIO

    GPIO General Purpose I/O ,网上能找到很多关于znyq gpio 的文章. 分类:EMIO .MIO .AXI_GPIO 硬件系统 MIO和EMIO是在zynq核中配置的,MI ...

  7. mydumper安装及使用

    mydumper 官网:https://launchpad.net/mydumper 安装方式: 1.yum install glib2-devel mysql-devel zlib-devel pc ...

  8. c# XML读取

    System.Xml 命名空间 https://msdn.microsoft.com/zh-cn/library/gg145036(v=vs.110).aspx 一.读取 1.通过 XmlDocume ...

  9. 一个无锁消息队列引发的血案(五)——RingQueue(中) 休眠的艺术

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  10. 安装numpy只需一步简单的方法

    因为最近在搞机器学习,涉及到python,因为我的python版本还是windoes下的2.7版本,在学习K临近算法的时候,需要安装numpy函数,下面就把自己的安装方法写下来 1:登录网址  htt ...