检查断言是否已启用

Wil*_*ill 4 java

您可以启用/禁用assertClassLoader.

但是如何确定它们是否已经启用?

(我想采用一些代码路径,只有在启用断言的情况下调用JVM时才执行昂贵的检查.)

kev*_*847 7

public static boolean areAssertsEnabled() {
  boolean assertsEnabled = false;
  assert assertsEnabled = true; // Intentional side effect!!!
  return assertsEnabled;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果断言被启用,那么不应该有一个捕获? (2认同)
  • 如果我可以接受多个答案,我也会接受这个!我的静态分析器抱怨断言中的副作用,因此我使用了 try/catch 来保持安静,并使代码对那些遵循的人来说不那么“啊哈”。 (2认同)

Rav*_*yal 5

boolean assertEnabled = false;

try {
   assert false;
} catch (AssertionError e) {
   assertEnabled = true;
}
Run Code Online (Sandbox Code Playgroud)