java中仅在调试模式下抛出异常

4 java debugging exception

即使出现问题,我也想避免发布时发生崩溃。这就是为什么我不想抛出我知道不会被处理的异常。在调试模式下,我想这样做,因为在调试过程中出现问题时获得尽可能多的噪音是有好处的。

问题是,如果我做类似的事情:

如果(DEBUG_MODE)抛出e;

然后我需要指定该方法抛出异常,但我不想这样做,因为在发行版中这不是真的。

处理这个问题的最佳方法是什么?

编辑

聚苯乙烯

我的问题不清楚抱歉。

就我而言,断言并不是很方便。问题是我已经知道出了问题,所以我没有什么可以断言的。为了更清楚地说明我有意想不到的例外。当然你可以说:编写代码不要出现意外的异常。但如果出现问题,我不希望应用程序崩溃。现在我添加了一个这样的函数:

public static void unexpectedException(String string, Exception e) {
    if (Build.DEBUG) {
        MyApp.errorLog(string);
        throw new RuntimeException(e);
    } else
        MyApp.errorLog(string, e);
}
Run Code Online (Sandbox Code Playgroud)

虽然你所有的答案都是正确的,但我会选择最接近我所做的一个

PS2

断言不太方便的另一种情况是当您实现类似状态的模式时。如果对于某些状态,您希望永远不会调用某个方法......

Mar*_*elo 5

您可以使用断言。

public void methodSomething(Object o){

   assert (o != null);  // will throw AssertionError during development

   ...

}
Run Code Online (Sandbox Code Playgroud)

但你确实应该捕获这些异常并处理它们(:


giz*_*zmo 5

永远不要这样做!
应在您的应用程序中一致地处理异常。使用日志记录机制来跟踪系统的行为方式,而不是通过将异常提升到应用程序接口层。