为什么不建议进行错误处理?

时间:2017-02-09 07:53:13

标签: java data-structures collections exception-handling

我知道我们不应该使用try catch来处理java中的Error,但是我尝试了它来学习并发现我们可以使用try catch块处理Error类似的Exception。即使是catch块之后的代码也正在执行。我生成了一个StackOverFlowError,但我仍然可以初始化局部变量。 任何人都可以解释一下吗?

import java.util.LinkedList;
import java.util.List;

public class ExceptionDemo {

    public static void main(String[] args) {
        try{
              method1();
        }
        catch(Error e){
            System.out.println(e.getStackTrace());

            System.out.println("Hello world");
            int a =10;
            System.out.println(a);          
            method();   
        }       
        System.out.println("Hello world2");
    }

    public static void method1(){
        method1();
    }   

    public static void method(){
        List l1 = new LinkedList();
        l1.add("A");        
        int[] aa = new int[10000];
        aa[0]=25;
        System.out.println(aa[0]);

        int b =10;
        int c = 20;     
        System.out.println( b +""+c);
    }
}

此课程的输出是 -

 [Ljava.lang.StackTraceElement;@1db9742

Hello world
10
25
1020
Hello world2

1 个答案:

答案 0 :(得分:5)

我的回答集中在你的问题的那部分与"为什么不捕捉错误&#34 ;;但你隐含的想法是你无法捕捉错误"。因为:你的想法完全错了!

您可以捕获 Throwable 的所有子类。只需看看这些词:可以抛出的所有内容也可以抓住

Error是Throwable的子类!

但是你是正确的,只有使用try / catch才能捕获另一个名为Exception的Throwable的子类的实例。对于"为什么不捕捉错误&#34 ;;这在here已广泛解释!

相关问题