尝试/捕获Java中的堆栈溢出?

新手上路,请多包涵

你能在 Java 中尝试/捕获堆栈溢出异常吗?无论哪种方式,它似乎都在投掷自己。当我的程序溢出时,我想“惩罚”那个值。

原文由 stereos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
2 个回答

似乎工作:

 public class Test {

    public static void main(String[] argv){
        try{
            main(null);
        }
        catch(StackOverflowError e){
            System.err.println("ouch!");
        }
    }

}

原文由 Thilo 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果出现堆栈溢出,则可能是在尝试无限递归或严重滥用函数调用。也许您可能会考虑使您的某些过程迭代而不是递归,或者仔细检查您的递归过程中是否有正确的基本情况。捕获堆栈溢出异常不是一个好主意;你是在治标不治本。

原文由 Michael Aaron Safyan 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题