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异常类型及其总结


目录
相关文章
|
9天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
9天前
|
Java
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
|
10天前
|
IDE 前端开发 Java
怎样避免 Java 中的 NoSuchFieldError 异常
在Java中避免NoSuchFieldError异常的关键在于确保类路径下没有不同版本的类文件冲突,避免反射时使用不存在的字段,以及确保所有依赖库版本兼容。编译和运行时使用的类版本应保持一致。
|
11天前
|
Java 编译器
如何避免在 Java 中出现 NoSuchElementException 异常
在Java中,`NoSuchElementException`通常发生在使用迭代器、枚举或流等遍历集合时,尝试访问不存在的元素。为了避免该异常,可以在访问前检查是否有下一个元素(如使用`hasNext()`方法),或者使用`Optional`类处理可能为空的情况。正确管理集合边界和条件判断是关键。
|
16天前
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
|
14天前
|
Java
Java异常捕捉处理和错误处理
Java异常捕捉处理和错误处理
14 1
|
16天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
23天前
|
Java
如何在 Java 中处理“Broken Pipe”异常
在Java中处理“Broken Pipe”异常,通常发生在网络通信中,如Socket编程时。该异常表示写入操作的另一端已关闭连接。解决方法包括:检查网络连接、设置超时、使用try-catch捕获异常并进行重试或关闭资源。
|
25天前
|
存储 安全 Java
如何避免 Java 中的“ArrayStoreException”异常
在Java中,ArrayStoreException异常通常发生在尝试将不兼容的对象存储到泛型数组中时。为了避免这种异常,确保在操作数组时遵循以下几点:1. 使用泛型确保类型安全;2. 避免生类型(raw types)的使用;3. 在添加元素前进行类型检查。通过这些方法,可以有效防止 ArrayStoreException 的发生。
|
27天前
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
33 2