java中异常的理解 向右看齐 2021-10-01 07:46 345阅读 0赞 ![12-130Q1234I6223.jpg][] Trowable是所有异常的超类,对应的底下有两个子类,Error和Exception,java中的异常其实总体上来说有三种类型: 一、检查性异常,程序在编译的时候出现的异常,例如打开一个文件,此时程序需要抛出FileNotFoundException等相关异常,简单来说就是可预见的异常。 二、运行时异常,程序在运行时抛出的异常,与检查性异常相反,运行时异常在编译时是可以通过的,只有程序执行到异常代码时才抛出异常,例如角标越界,空指针异常等等。 三、错误,错误和异常是不同,错误其实是脱离了程序员控制的问题,错误在代码中经常被忽略。比如内存溢出,在编译过程也是发现不了的 常用的非检查性异常: ArrayIndexOutOfBoundsException:用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。 IllegalArgumentException:抛出的异常表明向方法传递了一个不合法或不正确的参数。 IndexOutOfBoundsException:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。 NullPointerException:当应用程序试图在需要对象的地方使用 `null` 时,抛出该异常 NumberFormatException:当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。 常用的检查性异常: ClassNotFoundException:应用程序试图加载类时,找不到相应的类,抛出该异常 NoSuchFieldException:请求的变量不存在 NoSuchMethodException:请求的方法不存在 **异常中常用的方法:** 异常中的方法其实平时开发的时候使用的比较少,默认的try catch中会有有e.printStackTrace();如果是自定义异常的话,可以初始化参数,通过定义的方法取值,下边列举一下基本方法: **public String getMessage()** 返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了 **public Throwable getCause()** 返回一个Throwable 对象代表异常原因。 **public void printStackTrace()** 打印toString()结果和栈层次到System.err,即错误输出流 **public StackTraceElement \[\] getStackTrace()** 返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。 **捕获异常:** try { // 程序代码 }catch(ExceptionName e1) { //Catch 块 } 程序中对需要保护的代码,可以使用try-catch,当try 中的代码块有异常发生时,并且catch中包含对应的异常,那么异常就会进入到catch 代码块中去,catch是可以进行 多重捕捉的,根据不同的异常匹配进入不同的catch块中,有时候为了方便只用使用了Exception超类作为类型,只需要一个catch代码块 **throws 和 thorw关键字的使用:** 一个方法中,如果一个检查性的异常没有进行捕获,那么就需要在方法的尾部通过throws关键字将异常抛出,可一个自己手动的在代码中使用throw 一个异常,throws后可以跟上多个异常,使用逗号隔开 **finally 关键字的使用:** finally 中的代码块是在try之后执行,不管是否发生了异常,finally中的代码块都会执行,比如进行io流操作时,最终都会关闭流,一般都是放在finally中执行,即使发生异常了,流也要关闭,不然io资源一直被占用,造成了资源的浪费 **try-catch-finally 使用的细节:** * catch 不能独立于 try 存在。 * 在 try/catch 后面添加 finally 块并非强制性要求的。 * try 代码后不能既没 catch 块也没 finally 块。 * try, catch, finally 块之间不能添加任何代码 **自定义异常:** 一般项目开发中,根据业务的需要可能需要自己去定义不同的异常,如果说想定义一个检查性的异常,就继承Exception,如果想定义一个非检查性的异常就继承RuntimeException类,这里其实有个坑,之前写个需求,账户余额问题,不足的话抛出了一个自定义的异常,一开始继承的是Exception,异常正常抛出,但是事物没有回滚,后来查了下,spring aop 异常捕获只对RuntimeException进行捕获,所以改成RuntimeException事物正常回滚; 转载于:https://www.cnblogs.com/muyarn/p/9837164.html [12-130Q1234I6223.jpg]: /images/20210724/0d7a71c0d46144a1ab977583419255c9.png
相关 理解Java中的异常链 在Java编程中,异常链(Exception Chain)是指当一个方法抛出异常时,这个异常会沿着调用栈一路向上,直到被哪个方法捕获或者程序结束。 异常链的创建过程如下: 1 柔情只为你懂/ 2024年09月16日 05:33/ 0 赞/ 4 阅读
相关 理解Java中的异常链:继承异常示例 在Java中,异常是一种处理程序运行时错误的方式。异常链是当一个异常被抛出后,如果当前的异常处理器没有捕获这个异常,那么这个异常会继续向上层的异常处理器传递,直到找到一个能捕获 ﹏ヽ暗。殇╰゛Y/ 2024年09月11日 08:15/ 0 赞/ 13 阅读
相关 理解Java中的异常链 在Java中,异常链(Exception Hierarchy)是指当一个方法抛出异常时,这些异常按照它们的继承关系从上到下链接起来。这样做的目的是为了让调用者更好地理解和处理异 川长思鸟来/ 2024年09月10日 11:06/ 0 赞/ 15 阅读
相关 异常 - 深入理解Java中的异常体系 1.为什么要使用异常 使用异常是一种处理程序运行时错误和异常情况的有效机制,它具有以下几个优势: 错误隔离:异常可以将正常代码与错误处理逻辑分离开来。当出现异常 - 日理万妓/ 2023年10月14日 10:51/ 0 赞/ 32 阅读
相关 java 如何理解异常_java异常的 理解 1.体系结构 java.lang.Object |----java.lang.Throwable |-------java.lang.Error:错误,java程序对此无 布满荆棘的人生/ 2022年11月08日 11:27/ 0 赞/ 134 阅读
相关 java 异常 理解_Java异常理解 1.1 什么是异常: 异常就是Java程序在运行过程中出现的错误。 1.2 异常继承体系图: ![c82c18d55c227d5ba240adb3e55db0f7.png 曾经终败给现在/ 2022年10月23日 08:15/ 0 赞/ 251 阅读
相关 java中异常的理解 ![12-130Q1234I6223.jpg][] Trowable是所有异常的超类,对应的底下有两个子类,Error和Exception,java中的异常其实总体上来说有三 向右看齐/ 2021年10月01日 07:46/ 0 赞/ 346 阅读
还没有评论,来说两句吧...