异常有什么,异常类有什么

2024-05-27 07:12
文章标签 异常 类有

本文主要是介绍异常有什么,异常类有什么,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Java中,异常(Exception)是一种在程序运行过程中出现的不正常情况。异常机制提供了一种从错误中恢复的途径。异常分为两大类:检查异常(Checked Exception)运行时异常(Runtime Exception)。此外,还有错误(Error),尽管它们在语义上和异常类似,但它们表示系统级的异常情况。

1. 异常分类

检查异常(Checked Exception)

这些异常在编译时由编译器检查。如果方法抛出一个检查异常,必须要么捕获它(使用 try-catch 块),要么在方法签名中声明抛出它(使用 throws 关键字)。

常见的检查异常类

  • IOException
  • SQLException
  • ClassNotFoundException
  • FileNotFoundException
运行时异常(Runtime Exception)

这些异常在编译时不进行检查,只有在运行时抛出。这些异常通常是程序逻辑错误导致的,例如非法参数传递给方法等。

常见的运行时异常类

  • NullPointerException
  • ArrayIndexOutOfBoundsException
  • ArithmeticException
  • IllegalArgumentException
  • ClassCastException
错误(Error)

这些是由Java虚拟机(JVM)抛出的严重错误,程序无法处理或恢复。例如,内存溢出(OutOfMemoryError)。错误通常表示系统级别的问题,程序不应该试图捕获这些错误。

常见的错误类

  • OutOfMemoryError
  • StackOverflowError
  • VirtualMachineError
  • AssertionError

2. 异常类结构

在Java中,所有的异常类都继承自 java.lang.ThrowableThrowable类有两个重要的子类:ErrorException。其中,Exception 又进一步分为 RuntimeException 和其他检查异常。

异常类层次结构

java.lang.Object└── java.lang.Throwable├── java.lang.Error└── java.lang.Exception├── java.lang.RuntimeException└── 其他检查异常

3. 常见异常类

检查异常类(Checked Exception Classes)

  • java.io.IOException:IO操作失败或中断。
  • java.sql.SQLException:数据库访问错误。
  • java.lang.ClassNotFoundException:无法找到指定的类。
  • java.io.FileNotFoundException:尝试打开的文件不存在。

运行时异常类(Runtime Exception Classes)

  • java.lang.NullPointerException:调用了空对象的属性或方法。
  • java.lang.ArrayIndexOutOfBoundsException:数组下标越界。
  • java.lang.ArithmeticException:算术运算错误,如被零除。
  • java.lang.IllegalArgumentException:非法参数。
  • java.lang.ClassCastException:对象无法强制转换到指定的类型。

错误类(Error Classes)

  • java.lang.OutOfMemoryError:JVM没有足够的内存。
  • java.lang.StackOverflowError:方法调用栈溢出。
  • java.lang.VirtualMachineError:虚拟机发生内部错误。
  • java.lang.AssertionError:断言失败。

4. 自定义异常

有时候,标准的异常类不能完全描述问题,这时可以创建自定义异常类。自定义异常类通常继承自 ExceptionRuntimeException

自定义检查异常示例

public class CustomCheckedException extends Exception {public CustomCheckedException(String message) {super(message);}
}

自定义运行时异常示例

public class CustomRuntimeException extends RuntimeException {public CustomRuntimeException(String message) {super(message);}
}

5. 异常处理示例

捕获和处理异常

public class ExceptionHandlingExample {public static void main(String[] args) {try {// 可能抛出检查异常的方法checkedExceptionMethod();} catch (CustomCheckedException e) {System.out.println("Caught custom checked exception: " + e.getMessage());}try {// 可能抛出运行时异常的方法runtimeExceptionMethod();} catch (CustomRuntimeException e) {System.out.println("Caught custom runtime exception: " + e.getMessage());}}public static void checkedExceptionMethod() throws CustomCheckedException {throw new CustomCheckedException("This is a custom checked exception");}public static void runtimeExceptionMethod() {throw new CustomRuntimeException("This is a custom runtime exception");}
}

总结

  • 检查异常需要在编译时处理或声明,表示可以预期的异常情况。
  • 运行时异常通常是编程错误,只有在运行时才会发现,不需要在编译时处理。
  • 错误是严重的系统级问题,程序不应尝试处理。
  • 可以通过继承 ExceptionRuntimeException 创建自定义异常类,以更好地描述特定的异常情况。

这篇关于异常有什么,异常类有什么的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1006792

相关文章

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

Java报NoClassDefFoundError异常的原因及解决

《Java报NoClassDefFoundError异常的原因及解决》在Java开发过程中,java.lang.NoClassDefFoundError是一个令人头疼的运行时错误,本文将深入探讨这一问... 目录一、问题分析二、报错原因三、解决思路四、常见场景及原因五、深入解决思路六、预http://www

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例

Java捕获ThreadPoolExecutor内部线程异常的四种方法

《Java捕获ThreadPoolExecutor内部线程异常的四种方法》这篇文章主要为大家详细介绍了Java捕获ThreadPoolExecutor内部线程异常的四种方法,文中的示例代码讲解详细,感... 目录方案 1方案 2方案 3方案 4结论方案 1使用 execute + try-catch 记录

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论