Java Handler.publish()的实现能否引发运行时异常?
我有一个关于java.util.logging.Handler的问题: 这个抽象方法的实现是否允许抛出RuntimeException,还是应该始终向错误管理器报告 文档没有指定,但类中的其他方法明确说明了它们可以抛出什么: 公共摘要无效发布(LogRecord记录)发布日志记录。 日志记录请求最初是向记录器对象发出的,该记录器对象 初始化日志记录并将其转发到此处 处理程序负责设置消息的格式(如果有) 必要的。格式应该包括本地化 参数:记录-日志事件的描述。空记录是无效的 默认忽略,不发布Java Handler.publish()的实现能否引发运行时异常?,java,java.util.logging,Java,Java.util.logging,我有一个关于java.util.logging.Handler的问题: 这个抽象方法的实现是否允许抛出RuntimeException,还是应该始终向错误管理器报告 文档没有指定,但类中的其他方法明确说明了它们可以抛出什么: 公共摘要无效发布(LogRecord记录)发布日志记录。 日志记录请求最初是向记录器对象发出的,该记录器对象 初始化日志记录并将其转发到此处 处理程序负责设置消息的格式(如果有) 必要的。格式应该包括本地化 参数:记录-日志事件的描述。空记录是无效的 默认忽略,不发布 [链
[链接:在这种情况下,API规范并不总是与实现匹配。源代码中的不成文规则似乎是:
public class HostileErrorManager extends ErrorManager {
@Override
public void error(String msg, Exception ex, int code) {
sneakyThrow(new Throwable(msg + ": " + code, ex));
}
@SuppressWarnings("unchecked")
private <T extends RuntimeException> void sneakyThrow(Throwable t) throws T {
throw (T) t;
}
}
公共类HostileErrorManager扩展了ErrorManager{
@凌驾
公共无效错误(字符串消息、异常ex、整数代码){
Sneelkythrow(新的可丢弃(msg+“:”+代码,ex));
}
@抑制警告(“未选中”)
私人空间鬼鬼祟祟(可丢弃的t)抛出t{
投掷(T)T;
}
}