捕捉"堆栈溢出"错误返回" Null"

时间:2016-07-04 08:35:01

标签: java exception recursion null try-catch

演示递归及其耗尽堆栈空间的缺点。我在下面写了代码。当N非常大(如100000)时,我发现它返回了预期的错误(" java.lang.StackOverflowError")。然后我尝试使用下面给出的类和后续的驱动程序类来捕获此特定错误。但是,Netbeans IDE返回" null"如下图所示:

  

捕获堆栈溢出错误:null

     

100000的因子是68687.75095683799

     

直接计算1051299.221899134

     

建立成功(总时间:0秒)

有没有办法返回实际错误?有人可以帮我解决我做错的事吗?

    @Bean
    public ConnectionFactory connectionFactory(){
        return new CachingConnectionFactory();
    }

    @Bean
    public RabbitTemplate rabbitTemplate(){
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory());
        rabbitTemplate.setChannelTransacted(true);
        return rabbitTemplate;
    }

1 个答案:

答案 0 :(得分:2)

您的StackOverflowError没有消息(通常是运行时环境抛出异常的情况)。这就是您的日志语句打印null的原因。请注意,这不是您通常想要捕获的异常/错误。

无论如何,如果你想将更有意义的消息记录到控制台,只需使用错误的toString()方法,该方法将返回其类名(+详细消息,如果有的话) :

System.err.println("Caught stack Overflow error: " +  e);