摘要:检查异常未检查异常与及其子类称为未检查异常未显示提醒的异常编译器未检查的代码块,当程序运行时可能出现的异常,在没有和也没有的情况下,仍然可以编译通过。如内存溢出异常,堆栈溢出时,抛出该错误,数组超出排序索引范围时抛出等异常。
一、什么是Error
Error用于指示应用程序不应该试图捕获的严重问题。
二、什么是Exception
Exception类及其子类用于指示应用程序需要处理的异常。
三、Error与Exception之间的联系
1.继承联系
Error与Exception都继承java.lang.Throwable(所有错误或异常的超类)。
2.检查异常
未检查异常: Error与RuntimeException及其子类称为未检查异常(未显示提醒的异常),java编译器未检查的代码块,当程序运行时可能出现的异常,在没有try和catch,也没有throws的情况下,仍然可以编译通过。如:OutOfMemoryError(内存溢出异常),StackOverflowError(堆栈溢出时,抛出该错误),ArrayIndexOutOfBoundsException(数组超出排序索引范围时抛出)等异常。
检查异常: 除了Error与RuntimeException及其子类其他都称为检查异常(提醒处理的异常),这类异常如果没有try和catch,也没有throws的情况下,编译是不能通过的。如:TimeoutException(阻塞操作超时时,抛出该异常),IOException(当发生某种 I/O 异常时,抛出此异常)。
四、异常关键字
1.throw: 用来抛出任意异常,在程序内部使用,调用方法不会显示提醒需要处理异常。当抛出异常时,会检查是否有处理异常,有处理即按照处理逻辑运行,未处理时程序将抛出异常,然后终止运行。
2.throws: 用来抛出多个异常,在方法头部中声明,调用方法会提醒处理异常,不处理即不能通过编译。
3.try: 没有出现异常时,运行的代码块(当某行代码产生异常时,当前代码块立即停止运行)。
4.catch: 出现异常时,运行的代码块(出现异常时执行的代码块)。
5.finally: 不管异常是否出现都会执行的代码块,当try和catch里面有return时,finally还是会执行,⚠️ 如果finally中有return时,将返回finally里面的值。
五、Error与RuntimeException异常处理
1.如果程序出现RuntimeException异常,那么一定是程序没有写完善,需要重新修改程序。
2.如果程序出现StackOverflowError,多数情况下是递归调用方法出现了死循环,修改方法递归处理时的判断语句或者设置一个最大循环数。
3.如果程序出现OutOfMemoryError,那么就是内存满了,新的对象无法分配到内存,修改java内存配置参数(具体配置多少内存,需要预估整个应用的使用情况和GC的回收情况)。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71354.html
摘要:我们以登录场景设计一个状态机。第三步,定义状态机配置,设置初始状态,以及状态与事件之间的关系。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com/ 状态机中,每个状态有着相应的行为,随着行为的触发来切换状态。其中一种做法是使用二维数组实现状态机机制,其中横坐标表示行为,纵坐标表示状态,具体的数值则表示当前的状态。 我们以登录场景设计一个状态机。 showIm...
摘要:前言记录对于自定义异常的处理方式实现目标服务层异常,直接向上层抛出,层统一捕获处理如果是系统自定义异常,则返回其中对应为错误码,对应为异常信息如果非系统自定义异常,返回未知错误,同时将异常堆栈信息输出到日志便于定位问题项目架构先来张系统架 showImg(https://segmentfault.com/img/remote/1460000017782781?w=768&h=506);...
摘要:异常也就是指程序运行时发生错误,而异常处理就是对这些错误进行处理和控制。有两个重要的子类异常和错误,二者都是异常处理的重要子类,各自都包含大量子类。需要注意的是,一旦某个捕获到匹配的异常类型,将进入异常处理代码。 1,异常现象 程序错误分为三种:1,编译错误;2,运行时错误;3,逻辑错误。 编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置,这...
摘要:根据异常对象判断是否存在异常处理。否则,范围小的异常会因异常处理完成而无法处理。异常处理中使用作为异常的统一出口。 参考《第一行代码java》《java程序设计教程》java中程序的错误有语法错误、语义错误。如果是语法性错误,在编译时就可以检查出来并解决。语义错误是在程序运行时出现的,在编译时没有错误,但在运行时可能会出现错误导致程序退出,这些错误称为异常。在没有异常处理的情况下,也即...
摘要:不受检查异常为编译器不要求强制处理的异常,检查异常则是编译器要求必须处置的异常。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。异常处理涉及到五个关键字,分别是。 概念 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。 异常是程序中的一些错误,但并不是所有的错误都是异常,并...
阅读 3647·2021-11-24 09:39
阅读 1243·2021-09-30 09:48
阅读 3219·2021-09-09 11:51
阅读 2851·2021-09-08 10:41
阅读 1282·2019-08-30 14:06
阅读 2779·2019-08-30 14:01
阅读 854·2019-08-29 17:11
阅读 3152·2019-08-29 15:37