什么是异常?
exception一词是“exceptional event”这一短语的简写。
定义:异常是在程序执行期间发生的事件,它会破坏程序指令的正常流程。
当方法中发生错误时,该方法会创建一个对象并将其交给运行时系统,该对象称为异常对象,包含有关错误的信息,包括错误发生时的类型和程序状态,创建异常对象并将其交给运行时系统称为抛出异常。
在方法抛出异常后,运行时系统会尝试查找处理它的内容,处理异常的可能的“内容”的集合是已被调用以获取发生错误的方法的有序方法列表,方法列表称为调用堆栈(请参见下图)。
运行时系统在调用堆栈中搜索包含可处理异常的代码块的方法,这段代码称为异常处理程序,搜索从发生错误的方法开始,然后按照调用方法的相反顺序遍历调用堆栈,找到适当的处理程序后,运行时系统会将异常传递给处理程序,如果抛出的异常对象的类型与处理程序可以处理的类型匹配,则认为异常处理程序是合适的。
所选择的异常处理程序被称为捕获异常,如果运行时系统穷举搜索调用堆栈上的所有方法而没有找到适当的异常处理程序,如下图所示,则运行时系统(以及程序)终止。
使用异常来管理错误与传统的错误管理技术相比具有一些优势,你可以在“异常优势”部分了解更多信息。
上一篇:管理源文件和类文件 下一篇:捕获或指定要求文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/74037.html
Java™ 教程 Java教程是为JDK 8编写的,本页面中描述的示例和实践没有利用在后续版本中引入的改进。 Java教程是希望使用Java编程语言创建应用程序的程序员的实用指南,其中包括数百个完整的工作示例和数十个课程,相关课程组被组织成教程。 覆盖基础知识的路径 这些教程以书籍的形式提供,如Java教程,第六版,前往Amazon.com购买。 入门 介绍Java技术和安装Java开发软件并使用...
捕获或指定要求 有效的Java编程语言代码必须遵守捕获或指定需求,这意味着可能抛出某些异常的代码必须包含以下任一项: 捕获异常的try语句,try必须为异常提供处理程序,如捕获和处理异常中所述。 一种方法,指定它可以抛出异常,该方法必须提供一个throws子句,列出异常,如通过方法抛出指定异常中所述。 不符合捕获或指定要求的代码将无法编译。 并非所有异常都受捕获或指定要求的约束,为了理解原因,...
异常的优点 现在你已经知道了什么是异常以及如何使用它们,现在是时候了解在程序中使用异常的优势了。 优点1:将错误处理代码与常规代码分开 异常提供了从程序的主逻辑中分离异常发生时应该做什么的细节的方法,在传统的编程中,错误检测、报告和处理通常会导致混乱的意大利面代码,例如,考虑这里的伪代码方法将整个文件读入内存。 readFile { open the file; determine...
如何抛出异常 在捕获异常之前,某些代码必须抛出一个,任何代码都可能抛出异常:你的代码,来自其他人编写的包中的代码,例如Java平台附带的包或Java运行时环境,无论抛出什么异常,它总是使用throw语句抛出。 你可能已经注意到,Java平台提供了许多异常类,所有类都是Throwable类的后代,并且所有类都允许程序区分在程序执行期间可能发生的各种类型的异常。 你还可以创建自己的异常类来表示你编写的...
摘要:挺多人咨询的,异常处理用切面注解去实现去全局异常处理。全局异常处理类,代码如下代码解析如下抽象类是用来处理全局错误时进行扩展和实现注解标记的切面排序,值越小拥有越高的优先级,这里设置优先级偏高。 本文内容 为什么要全局异常处理? WebFlux REST 全局异常处理实战 小结 摘录:只有不断培养好习惯,同时不断打破坏习惯,我们的行为举止才能够自始至终都是正确的。 一、为什么要全局...
阅读 2293·2021-09-22 15:27
阅读 3165·2021-09-03 10:32
阅读 3490·2021-09-01 11:38
阅读 2492·2019-08-30 15:56
阅读 2206·2019-08-30 13:01
阅读 1531·2019-08-29 12:13
阅读 1409·2019-08-26 13:33
阅读 884·2019-08-26 13:30