本文主要是介绍异常有什么,异常类有什么,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在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.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.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. 自定义异常
有时候,标准的异常类不能完全描述问题,这时可以创建自定义异常类。自定义异常类通常继承自 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
创建自定义异常类,以更好地描述特定的异常情况。
这篇关于异常有什么,异常类有什么的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!