Java的异常理解 刺骨的言语ヽ痛彻心扉 2022-05-15 11:30 184阅读 0赞 # 1.什么是异常 # 在Java程序运行时,常常会出现一些非正常的现象,这种情况称为错误。根据其性质分为错误和异常。Java程序中(无论谁写的代码),所有抛出的(throw)的异常都必须从Throwable派生而来。类Throwable有两个子类:Error和Exception。如下结构图: ![70][] 一般来说,最常见的错误有程序进入死循环、内存泄漏等。这种情况下,程序运行时本身无法解决,只能通过其他程序的干预。Java对应的类为Error类。Error类对象由Java虚拟机生成并抛弃(通常情况下Java程序不对这类异常进行处理)。 异常是程序执行时遇到的非正常情况或意外。一般比如:代码或调用的代码(如共享库)中有错误,操作系统资源不可用,公共语言运行库遇到意外情况(如无法验证代码)等。常见的有数组下标越界、算法溢出(超出数值表达范围)、 除数为零、无效参数、内存溢出等。这种情况不像错误类那样,程序运行时本身无法解决,由异常代码调整程序运行方向,使程序仍可以继续运行,直到正常结束。 Java异常对应的类为Exception类。Exception类对象是Java程序处理或抛弃的对象,它有各种不同的子类分别对应不同的异常类型。Java编译器要求程序必须捕获或声明所有的非运行时异常,但对运行时异常可以不做处理。其中类RuntimeException代表运行时由Java虚拟机生成的异常,原因是编程错误。其他则为非运行时异常,原因是程序碰到了意外情况,如输入/输出异常IOException等。 # 2.异常关键字 # Java异常处理的关键语句有五个:try、catch、throw、throws、finally。其中,try、catch、finally三个语句注意以下问题: 1)try、catch、finally三个语句块均不能单独使用,三者可以组成try...catch...finally、try...catch、try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个。 2)try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。 3)若多个catch块,只会匹配其中一个异常类并执行catch块里的代码,而不会再执行别的catch块,并且匹配catch语句的顺序是由上到下的。 4)执行的返回值会最终被finally中的返回值覆盖掉如下代码: import org.junit.Test; /**测试捕获异常的执行顺序 * @author QuLei * */ public class TestException { @Test public void test1() { int i =test(); System.out.println(i); } /**测试try、catch、finally的执行顺序以及return的返回值,前 * 面的返回值会被finally中的覆盖掉 * @return */ @SuppressWarnings("finally") public int test() { int i = 1; try { i = 1+3; //i = 1/0; System.out.println(i); return i; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return 1; }finally { return 2; } } } 5).throw、throws关键字的区别。 throw关键在用于方法体内部,用来抛出一个Throwable类型的异常。如果抛出了检查异常,则还应该在头部声明方法可能抛出的异常类型。该方法的调用者也必须检查异常。如果所有的方法都层层上抛获取的异常,最终JVM会进行处理,处理也很简单,就是打印异常消息和对堆栈信息。如果抛出的是Error或RuntimeException,则该方法的调用者可以选则处理该异常。 throws关键字用于方法外部的方法声明部分,用来声明方法可能会抛出某些异常。仅当抛出了检查异常,该方法的调用者才必须处理或重新抛出该异常。 ## 3.异常处理中的问题 ## 1)过于庞大的try块 尽可能的设置多个异常抛出点来解决。异常从产生点开始,到被捕获后终止的全过程中,实际是一个传值的过程,所以,应根据实际来合理的控制检测异常个数。catch语句表示会出现某种异常,而且希望能够处理该异常。所以在catch语句中尽量指定具体的异常类型。 2)异常处理的完整性 在Java中,如果一个函数被调用可能会向上抛一个异常,那么,它就必须在该函数的声明中显示地注明(采用trhrows关键字)。 3)RuntimeException可以捕获处理,也可以交给虚拟机处理。 [70]: /images/20220515/da6a11be2d5b4bcd92cd9e96010c1502.png
相关 【Java】理解异常 异常处理 异常处理 Error 和Exception `Exception`和`Error`, ⼆者都是Java 异常处理的重要⼦类, 各⾃都包含⼤量⼦类。均继承自`Thro 太过爱你忘了你带给我的痛/ 2024年04月03日 09:15/ 0 赞/ 46 阅读
相关 异常 - 深入理解Java中的异常体系 1.为什么要使用异常 使用异常是一种处理程序运行时错误和异常情况的有效机制,它具有以下几个优势: 错误隔离:异常可以将正常代码与错误处理逻辑分离开来。当出现异常 - 日理万妓/ 2023年10月14日 10:51/ 0 赞/ 32 阅读
相关 Java异常理解与常见异常 一.什么是异常: 异常机制: > 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控 雨点打透心脏的1/2处/ 2023年01月02日 04:25/ 0 赞/ 139 阅读
相关 java 如何理解异常_java异常的 理解 1.体系结构 java.lang.Object |----java.lang.Throwable |-------java.lang.Error:错误,java程序对此无 布满荆棘的人生/ 2022年11月08日 11:27/ 0 赞/ 135 阅读
相关 java 异常 理解_Java异常理解 1.1 什么是异常: 异常就是Java程序在运行过程中出现的错误。 1.2 异常继承体系图: ![c82c18d55c227d5ba240adb3e55db0f7.png 曾经终败给现在/ 2022年10月23日 08:15/ 0 赞/ 251 阅读
相关 理解java异常机制 在理想状态下,程序会按照我们预想的步骤一步一步的执行,但是即使你是大牛,你也不可避免出错,所以java为我们提供了异常机制。本文将会从以下几个方面介绍java中的异常机制: 小灰灰/ 2022年06月16日 01:37/ 0 赞/ 209 阅读
相关 Java的异常理解 1.什么是异常 在Java程序运行时,常常会出现一些非正常的现象,这种情况称为错误。根据其性质分为错误和异常。Java程序中(无论谁写的代码),所有抛出的 刺骨的言语ヽ痛彻心扉/ 2022年05月15日 11:30/ 0 赞/ 185 阅读
相关 java中异常的理解 ![12-130Q1234I6223.jpg][] Trowable是所有异常的超类,对应的底下有两个子类,Error和Exception,java中的异常其实总体上来说有三 向右看齐/ 2021年10月01日 07:46/ 0 赞/ 346 阅读
相关 理解Java异常 文章目录 Java异常的简介 Java异常的体系结构 Java异常的处理 基本异常处理 finally块 异常的 柔光的暖阳◎/ 2021年09月28日 00:20/ 0 赞/ 300 阅读
还没有评论,来说两句吧...