qq炫舞做字网站,江门seo网站,广饶网站开发,深圳市电子商务有限公司在Java中#xff0c;异常#xff08;Exception#xff09;是一种在程序运行过程中出现的不正常情况。异常机制提供了一种从错误中恢复的途径。异常分为两大类#xff1a;检查异常#xff08;Checked Exception#xff09;和运行时异常#xff08;Runtime Exception…在Java中异常Exception是一种在程序运行过程中出现的不正常情况。异常机制提供了一种从错误中恢复的途径。异常分为两大类检查异常Checked Exception和运行时异常Runtime Exception。此外还有错误Error尽管它们在语义上和异常类似但它们表示系统级的异常情况。
1. 异常分类
检查异常Checked Exception
这些异常在编译时由编译器检查。如果方法抛出一个检查异常必须要么捕获它使用 try-catch 块要么在方法签名中声明抛出它使用 throws 关键字。
常见的检查异常类
IOExceptionSQLExceptionClassNotFoundExceptionFileNotFoundException
运行时异常Runtime Exception
这些异常在编译时不进行检查只有在运行时抛出。这些异常通常是程序逻辑错误导致的例如非法参数传递给方法等。
常见的运行时异常类
NullPointerExceptionArrayIndexOutOfBoundsExceptionArithmeticExceptionIllegalArgumentExceptionClassCastException
错误Error
这些是由Java虚拟机JVM抛出的严重错误程序无法处理或恢复。例如内存溢出OutOfMemoryError。错误通常表示系统级别的问题程序不应该试图捕获这些错误。
常见的错误类
OutOfMemoryErrorStackOverflowErrorVirtualMachineErrorAssertionError
2. 异常类结构
在Java中所有的异常类都继承自 java.lang.Throwable。Throwable类有两个重要的子类Error 和 Exception。其中Exception 又进一步分为 RuntimeException 和其他检查异常。
异常类层次结构
java.lang.Object└── java.lang.Throwable├── java.lang.Error└── java.lang.Exception├── java.lang.RuntimeException└── 其他检查异常3. 常见异常类
检查异常类Checked Exception Classes
java.io.IOExceptionIO操作失败或中断。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.OutOfMemoryErrorJVM没有足够的内存。java.lang.StackOverflowError方法调用栈溢出。java.lang.VirtualMachineError虚拟机发生内部错误。java.lang.AssertionError断言失败。
4. 自定义异常
有时候标准的异常类不能完全描述问题这时可以创建自定义异常类。自定义异常类通常继承自 Exception 或 RuntimeException。
自定义检查异常示例
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);}
}总结
检查异常需要在编译时处理或声明表示可以预期的异常情况。运行时异常通常是编程错误只有在运行时才会发现不需要在编译时处理。错误是严重的系统级问题程序不应尝试处理。可以通过继承 Exception 或 RuntimeException 创建自定义异常类以更好地描述特定的异常情况。