Java中的异常有哪几类?分别怎么使用?

原 https://my.oschina.net/mrfu/blog/1602758

Java中的异常有哪几类?分别怎么使用?_第1张图片

Throwable是所有异常的根,java.lang.Throwable

Error:错误,Java.lang.Error

Exception:异常,java.lang.Exception

Exception分为CheckedException和RuntimeException,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。

①checkedException:
只有Java语言提供了Checked异常,Java认为checked异常都是可以被处理的异常,所以Java程序必须显示处理checked异常。如果程序没有处理checked异常,该程序在编译时会发生错误无法编译。这体现了Java的设计哲学:没有完善错误处理的代码根本没有机会被执行。

对Checked异常处理方法有两种:

1、当前方法知道如何处理该异常,则用try…catch块来处理。

2、当前方法不知道如何处理,则在定义该方法时声明抛出该异常。

import java.io.IOException;

public class CheckedExceptionMethods {
    // 总异常类,既有checkedException又有RuntimeException,所以其中的checkedException必须处理  
    public void method1() throws Exception {
        System.out.println("我是抛出异常总类的方法");
    }

    // 捕获并处理这个异常  
    public void testMethod1_01() {
        try {
            method1();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 把异常传递下去  
    public void testMethod1_02() throws Exception {
        method1();
    }

    public void testMethod1_03() throws Exception {
        throw new Exception();
    }

    public void testMethod1_04() {
        try {
            throw new Exception();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // checkedException典型代表IOException  
    public void method2() throws IOException {
        System.out.println("我是抛出IO异常的方法");
    }

    public void testMethod2_01() {
        try {
            method2();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void testMethod2_02() throws Exception {
        method2();
    }

}  


 

我们比较熟悉的Checked异常有

Java.lang.ClassNotFoundException
Java.lang.NoSuchMetodException
java.io.IOException

②RuntimeException

Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。

/**
 * 运行时异常测试方法
 */
public class RuntimeExcetionMethods {
    public void method3() throws RuntimeException {
        System.out.println("我是抛出运行时异常的方法");
    }

    public void testMethod3_01() {
        method3();
    }

    public void testMethod1_02() {
        throw new RuntimeException();
    }
} 

我们比较熟悉的RumtimeException类的子类有

Java.lang.ArithmeticException
Java.lang.ArrayStoreExcetpion
Java.lang.ClassCastException
Java.lang.IndexOutOfBoundsException
Java.lang.NullPointerException

你可能感兴趣的:(java基础)