📜  Java中的异常类型与示例(1)

📅  最后修改于: 2023-12-03 15:16:32.694000             🧑  作者: Mango

Java中的异常类型与示例

在Java中,异常是指程序发生错误或意外情况时执行的条件或事件。在Java中,每个异常都是一个对象,派生自Throwable类。

Java中异常分为三类:可检查异常、不可检查异常和错误。其中可检查异常是指可以被程序通过处理或捕获来防止程序崩溃,不可检查异常是指程序无法处理或捕获的异常,错误是指严重的问题,通常有可能引起程序崩溃。

可检查异常

可检查异常是指可以通过Java编译器来检查的异常类型。在Java中,所有的可检查异常都派生自Exception类。

IOException

IOException是Java中常见的异常类型,表示IO操作发生错误。

try {
    FileInputStream fileInput = new FileInputStream("file.txt");
    int i = fileInput.read();
} catch (IOException e) {
    System.out.println(e.getMessage());
}
SQLException

SQLException是Java中用于处理数据库错误的异常类型。

try {
    Connection con = DriverManager.getConnection(url, username, password);
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");
} catch (SQLException e) {
    System.out.println(e.getMessage());
}
ClassNotFoundException

ClassNotFoundException是Java中用于处理类找不到错误的异常类型。

try {
    Class<?> cls = Class.forName("com.example.MyClass");
} catch (ClassNotFoundException e) {
    System.out.println(e.getMessage());
}
不可检查异常

不可检查异常是指程序运行时发生的错误,无法通过Java编译器来检查。在Java中,所有的不可检查异常都派生自RuntimeException类。

NullPointerException

NullPointerException是Java中最常见的不可检查异常类型,表示程序试图使用一个null对象引用。

String str = null;
if (str.equals("hello")) { //NullPointerException
    System.out.println("World");
}
ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException是Java中用于处理数组索引越界错误的异常类型。

int[] arr = {1, 2, 3};
for (int i = 0; i <= arr.length; i++) { //ArrayIndexOutOfBoundsException
    System.out.println(arr[i]);
}
ArithmeticException

ArithmeticException是Java中用于处理算术错误(如除以零)的异常类型。

int a = 10, b = 0;
int c = a / b; //ArithmeticException
错误

错误是指严重的问题,通常有可能引起程序崩溃。在Java中,所有的错误都派生自Error类。

OutOfMemoryError

OutOfMemoryError是Java中用于处理内存溢出错误的异常类型。

List<String> list = new ArrayList<>();
while (true) {
    list.add("Memory Leak");
}
NoSuchMethodError

NoSuchMethodError是Java中用于处理方法不存在错误的异常类型。

public class MyClass {
    public void myMethod() {
        //...
    }
}

MyClass obj = new MyClass();
obj.myWrongMethod(); //NoSuchMethodError
StackOverflowError

StackOverflowError是Java中用于处理栈溢出错误的异常类型。通常是因为函数调用嵌套层数过多导致。

public class MyClass {
    public void myMethod() {
        myMethod();
    }
}

MyClass obj = new MyClass();
obj.myMethod(); //StackOverflowError
Conclusion

Java中的异常类型分三类:可检查异常、不可检查异常和错误。可检查异常可以通过Java编译器来检查,不可检查异常和错误在程序运行时发生,无法通过Java编译器来检查。需要根据实际情况来选择合适的异常处理方式,避免程序崩溃。