在main()方法中记录Throwable异常

3
捕获Throwable是不可取的,原因在不同的帖子中已经阐述。然而,像下面这样构建主函数是否有意义?如果删除Throwable行,则错误将不会被记录。
public static void main(String[] args) {
    try {
        launchMyApplication();
    } catch (SomeCheckedException e) {
        //recover if you can, log it if you can't
    } catch (Exception e) {
        //recover if you can (unlikely), log it if you can't
    } catch (Throwable e) {
        //Don't try to recover, but log it
        logger.error("Oops: {}", e);
    }
}

如果异常被第一个catch捕获,它会重新抛出以便被最后一行捕获吗?否则它将无法通过catch(Exception e) - Jivings
不,我不会在 main() 中重新抛出异常。 - assylias
+1 很好的问题。希望也能得到一些好的答案。 - Chandra Sekhar
那么你什么时候期望会调用catch Throwable呢? - Jivings
1
这里有一些关于在Java中捕获Throwable的有趣信息:https://dev59.com/lXNA5IYBdhLWcg3wF5qO - dexametason
3
如果发生错误(如StackOverflowError),由于它们是Throwable的子类而不是Exception,因此将调用throwable。 - Chandra Sekhar
1个回答

10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接