(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. Docker 入门 第二部分: 容器

    目录 Docker 入门 第二部分: 容器 先决条件 介绍 你的新开发环境 使用 Dockerfile 定义一个容器 Dockerfile 应用本身 requirements.txt app.py 构 ...

  2. 20155215 2016-2017-2 《Java程序设计》第7周学习总结

    20155215 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 lambda语法:Lambda去重复,回忆DRY原则,Lambda表达式可读性更好 ...

  3. 第9月第6天 push pop动画 生成器模式(BUILDER)

    1. https://github.com/MichaelHuyp/QQNews 2.生成器模式(BUILDER) class MazeBuilder { public: virtual void B ...

  4. Ascending Rating(单调队列)

    题目描述 Before the start of contest, there are n ICPC contestants waiting in a long queue. They are lab ...

  5. ESXi 6.5 总是会话超时

    ESXi 6.5 客户端Web界面会话超时 在VMware ESXi 6.5中,主机客户端Web界面会话每15分钟自动超时一次,然后您必须再次重新登录ESXi主机客户端Web界面. 要避免这种繁琐的情 ...

  6. 【黑客免杀攻防】读书笔记10 - switch-case分支

    0x1 switch-case分支 switch-case其实就是if-else语句的另一种体现形式.但大于3之后的switchc-case.编译器会对代码进行优化. 1.1 简单switch-cas ...

  7. MySQL的Auto-Failover功能

    今天来体验一下MySQL的Auto-Failover功能,这里用到一个工具MySQL Utilities,它的功能很强大.此工具提供如下功能:(1)管理工具 (克隆.复制.比较.差异.导出.导入)(2 ...

  8. Python 优雅获取本机 IP 方法

    原文 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  9. linux串口驱动分析【转】

    转自:http://blog.csdn.net/hanmengaidudu/article/details/11946591 硬件资源及描述 s3c2440A 通用异步接收器和发送器(UART)提供了 ...

  10. 经典sql-获取当前文章的上一篇和下一篇

    我们在做资讯类的网站的时候,肯定会有这么一个需求,就是在资讯内容页的下方需要给出上一篇和下一篇资讯的链接.上次我一同事兼好友兼室友就遇到了这么一个需求,一开始我们都把问题想复杂了,先取的是符合条件的资 ...