我有这个代表警告,而不是异常/错误。
new Error("Warning: Callback fired more than once.").printStackTrace(System.err);
看起来是这样:
java.lang.Error: Warning: Callback fired more than once.
我的问题是,如何创建警告而不是错误,像这样:
new Warning("Warning: Callback fired more than once.").printStackTrace(System.err);
以便打印出来:
java.lang.Warning: Warning: Callback fired more than once.
答案 0 :(得分:4)
您应该简化日志记录框架来执行此操作。根据您使用的方式,它看起来像logger.warn("Callback fired more then once.")
。如果还需要堆栈跟踪,则可以将其添加到日志消息中。如果没有涉及的日志记录框架,有时可能会变得不方便,则可以将警告打印为标准输出:System.out.println("Warning: Callback fired more than once.")
答案 1 :(得分:2)
您可以创建自己的异常类型
public class Warning extends RuntimeException {
//override constructors
}
然后您将可以执行
之类的操作 new Warning("Warning: Callback fired more than once.").printStackTrace(System.err);
答案 2 :(得分:1)
您不能直接执行此操作,一种可能的方法是使用记录器:
public static void main(String[] args) {
java.util.logging.Logger logger = java.util.logging.Logger.getLogger("");
logger.warning("warn message");
}
答案 3 :(得分:1)
你不能。
以便打印出来:
java.lang.Warning:
java.lang程序包是“密封的”,您不能在该程序包中创建自己的类。
从这个角度来看,您可以实现的 best 是创建自己的RuntimeException
子类,以
your.com.whatever.Warning: Warning
除此之外,其他答案是正确的:这是一个已解决的问题。您将要重新发明轮子,所以真正的答案是退后一步,研究日志记录框架,并使用它。还要首先研究如何使用Java异常,您的代码抛出Error实例是错误的!对于严重的错误条件,错误是JVM本身引发的真正可怕的事情。不应将它们用于代码中的错误或您在此处考虑的任何断言。