Java异常类型及其总结

简介: Java异常类型及其总结

前言


  相信小伙伴在编写代码的过程中都或多或少的遇到过各种各样的异常,那么你知道都有哪些异常吗?下面带领大家一起回顾一下Java中的异常。


什么是异常


  异常是在我们开发的程序中的一些错误,但是并不是所有的错误都是异常,并且错误有时候是可以避免的。在Java等面向对象的编程语言中异常属于对象。

  异常出现的情况也是很多,包括用户输入非法的字符,在程序中没有校验,就会出现参数异常;在程序运行时,出现了除数0的变量,也会出现异常;打开某个路径下的文件,而文件不存在也会出现异常信息。那么我们面对不同的异常该如何处理呢?哪些异常可以让程序继续运行下去哪些异常需要让程序终止运行?这就是我们在编写开发业务逻辑过程中需要注意的地方。

检查时异常:检查时异常是指程序在编译的过程中,进行词法、语法、语句、依赖等编译过程中的异常,程序员是无法预见的异常,是在编译中提示的异常。例如:缺少依赖文件等。

运行时异常:运行时异常是指在编译后,程序运行阶段出现的异常,这类异常在刚步入开发人员的时候出现的比较多,这一类运行时的异常,往往是可以被程序员代码编写所避免的。例如:空指针异常、

错误:是严重的异常,错误在代码中通常被忽略,例如内存溢出等情况。错误在编译的过程中是检测不到的。


Java中的异常


  作者是Java开发者,所以基于Java中的异常进行了一下简单的总结。如下图是根据javaJDK中列出的一些异常信息。


image.png

  从图中可以看到Throwable是Error和Exception的超类,所有的异常类都是Exception的子类,所有的错误都是Error的子类。当我们的程序中出现了异常,需要针对不同的异常进行操作。其中以Throwable 类中的基本方法给大家简单介绍。


getMessage()


  getMessage()方法返回关于发生的异常的详细信息。这个消息在Throwable类的构造函数中初始化了。在我们的程序中可以直接通过异常信息去获取Exception e示例如下:


e.getMessage();


getCause()


  getCause()返回一个Throwable 对象代表异常原因。


toString()


  toString()方法使用getMessage()的结果返回类的串级名字。


printStackTrace()

  printStackTrace()方法打印toString()结果和栈层次到System.err,即错误输出流。一般使用printStackTrace()将异常日志输出到控制台中。


getStackTrace()

  getStackTrace()方法返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。


异常处理


  既然在我们开发程序的中那么多的异常,我们怎么去捕获这些异常并进行处理呢,以减少不必要的错误,那么现在就开始介绍。


throws/throw


  throws/throw关键字的作用是如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。其简单格式如下:一般在方法的末尾使用。

public void testException() throws Exception{
    }

  

也可以使用throw 关键字抛出一个异常。使用throw 关键字抛出的异常,在方法名之后需要有throws的关键字声明异常来接受。


public void testException() throws Exception{
        throw  new Exception();
    }


try/catch关键字


  在我们的程序中,针对可能出现的异常代码块可以使用try和catch关键字来捕获异常。try/catch 代码块放在异常可能发生的地方。其中被try/catch代码块中的代码称为保护代码,当保护代码中出现异常之后,可以根据业务需要是否继续执行后续代码,还是针对异常信息进行处理并抛出异常,是一种灵活的异常处理方式,其代码块的格式如下:

try{
   //  业务代码
}catch(Exception e){
   //Catch 块
}

  

当然针对try/catch关键字中多个 catch的方式也是可以的,称为多重捕获。其常用的格式如下:


try{
   // 业务代码
}catch(异常类型1 e1){
  // 业务代码
}catch(异常类型2 e2){
  // 业务代码
}catch(异常类型3 e3){
  // 业务代码
}

  

在try中的代码发生异常的情况下,优先匹配第一个catch块中的内容,由近及远挨着匹配,直到匹配到相关异常。


finally关键字


  finally关键字用来创建在try/catch代码块最后。无论try/catch代码块是否发生异常finally代码块中的代码总会被执行。在finally代码块中,可以运行清理类型等收尾善后性质的语句。其语法格式如下:


try{
   //  业务代码
}catch(Exception e){
   //Catch 块
}finally{
    //  业务代码
}


结语


  好了,以上就是Java异常类型及其总结


目录
打赏
0
0
0
0
7
分享
相关文章
|
4月前
|
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
126 1
如何避免 Java 中的 TimeoutException 异常
在Java中,`TimeoutException`通常发生在执行操作超过预设时间时。要避免此异常,可以优化代码逻辑,减少不必要的等待;合理设置超时时间,确保其足够完成正常操作;使用异步处理或线程池管理任务,提高程序响应性。
235 13
|
4月前
|
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
68 1
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
39 14
|
7天前
|
课时11:Java数据类型划分(浮点类型)
课时11介绍了Java中的浮点数据类型。主要内容包括:1. 定义小数,默认使用Double类型;2. 定义Float变量,需在数值后加"F"或"f"进行强制转换;3. 观察不同类型计算结果,如Int型除法会丢失精度,需至少包含一个Double或Float类型以确保准确性。总结指出,在复杂计算中推荐使用Double类型以避免精度损失。
|
7天前
|
课时10:Java数据类型划分(整型类型)
本文主要围绕Java中整型数据展开,详细讲解整型变量、常量的概念,整型数据运算规则,包括数据溢出问题及解决方法,数据类型转换(自动转换与强制转换)的原理和注意事项,同时介绍了整型数据默认值的相关知识,以及byte数据类型与int数据类型的关系和使用场景,帮助读者全面掌握Java整型数据的相关内容。
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
99 14
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
122 5
怎样避免 Java 中的 NoSuchFieldError 异常
在Java中避免NoSuchFieldError异常的关键在于确保类路径下没有不同版本的类文件冲突,避免反射时使用不存在的字段,以及确保所有依赖库版本兼容。编译和运行时使用的类版本应保持一致。
144 8
如何避免在 Java 中出现 NoSuchElementException 异常
在Java中,`NoSuchElementException`通常发生在使用迭代器、枚举或流等遍历集合时,尝试访问不存在的元素。为了避免该异常,可以在访问前检查是否有下一个元素(如使用`hasNext()`方法),或者使用`Optional`类处理可能为空的情况。正确管理集合边界和条件判断是关键。
149 6

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等