快速业务通道

驯服Tiger: 线程中的默认异常处理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
mple");     Handler handler = LoggingWindowHandler.getInstance();     logger.addHandler(handler);    }    logger.log(Level.WARNING, t.getName(), e);   } }

这里创建的定制 Handler 的类型为 LoggingWindowHandler ,该类型的定义在清单 5 中。处理程序使用了一个支持类 LoggingWindow ,该类将异常显示在屏幕上。 清单 6 中显示了该类的定义。 Handler 的 public void publish(LogRecord record) 方法实现了一些重要操作。其余操作大部分只与配置有关。

清单 5. LoggingWindowHandler 的定义

import java.util.logging.*; public class LoggingWindowHandler extends Handler {   private static LoggingWindow window;   private static LoggingWindowHandler handler;   private LoggingWindowHandler() {    configure();    window = new LoggingWindow("Logging window...", 400, 200);   }   public static synchronized LoggingWindowHandler getInstance() {    if (handler == null) {     handler = new LoggingWindowHandler();    }    return handler;   }   /**   * Get any configuration properties set   */   private void configure() {    LogManager manager = LogManager.getLogManager();    String className = getClass().getName();    String level = manager.getProperty(className + ".level");    setLevel((level == null) ? Level.INFO : Level.parse(level));    String filter = manager.getProperty(className + ".filter");    setFilter(makeFilter(filter));    String formatter =     manager.getProperty(className + ".formatter");    setFormatter(makeFormatter(formatter));   }   private Filter makeFilter(String name) {    Filter f = null;    try {     Class c = Class.forName(name);     f = (Filter)c.newInstance();    } catch (Exception e) {     if (name != null) {      System.err.println("Unable to load filter: " + name);     }    }    return f;   }   private Formatter makeFormatter(String name) {    Formatter f = null;    try {     Class c = Class.forName(name);     f = (Formatter)c.newInstance();    } catch (Exception e) {     f = new SimpleFormatter();    }    return f;   }   // Overridden abstract Handler methods   public void close() {   }   public void flush() {   }   /**   * If record is loggable, format it and add it to window   */   public void publish(LogRecord record) {    String message = null;    if (isLoggable(record)) {     try {      message = getFormatter().format(record);     } catch (Exception e) {      reportError(null, e, ErrorManager.FORMAT_FAILURE);      return;     }     try {      window.addLogInfo(message);     } catch (Exception e) {      reportError(null, e, ErrorManager.WRITE_FAILURE);     }    }   } }

驯服Tiger: 线程中的默认异常处理(3)

时间:2011-01-31 John Zukowski

清单 6. LoggingWindow 的定义

import java.awt.*; import javax.swing.*; public class LoggingWindow extends JFrame {   private JTextArea textArea;   public LoggingWindow(String title, final int width,  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号