程序中不免会出现错误,当错误发生时,您可以使用System.err.println()或是 System.out.println()在主控台 (Console)显示讯息给使用者,如果是在窗口程序中,可能是使用消息框,如果是在网页程序中,则显示一个错误讯息页面,除了提供错误讯息之外,您还可能想将错误讯息以某种方式储存下来,以供使用者或是程序人员debug时使用。
在Java中的java.util.logging套件提供了一系列的logging工具,如果您只是要简单的记录一些讯息,就可以使用 它,这些logging工具在J2SE 1.4之后加入了Java标准中,不必额外配备logging组件就可以运行于标准的Java平台上是它的好处。
像是简单的主控台讯息显示或是记录档案的输出,java.util.logging下都提供了一些预设的工具,您不必亲自撰写这些工具。
来看一个简单的例子,假设您的程序在启动时必须提供参数,如果使用者没有提供参数,则必须显示警示讯息:
package onlyfun.caterpillar; import java.util.logging.*; public class LoggingDemo { public static void main(String[] args) { Logger logger = Logger.getLogger("LoggingDemo"); try { System.out.println(args[0]); } catch(ArrayIndexOutOfBoundsException e) { logger.warning("没有提供执行时的自变量!"); } } }
执行结果:
2005/2/3 上午 10:50:54 onlyfun.caterpillar.LoggingDemo main 警告: 没有提供执行时的自变量!?
如上所示的,您简单的透过Logger的静态方法getLogger()取得Logger对象,之后就可以运用它的方法进行讯 息输出,预设是从主控台输出讯息,除了您提供的讯息之外,Logger还自动帮您收集了相关的讯息,像是类别与套件名称,执行该段程序的执行绪名称以及讯 息产生的时间等,这比下面这个程序所提供的讯息丰富的多了。
package onlyfun.caterpillar; public class LoggingDemo { public static void main(String[] args) { try { System.out.println(args[0]); } catch(ArrayIndexOutOfBoundsException e) { System.err.println("没有提供执行时的自变量!"); } } }
您不用亲自实作,直接使用 java.util.logging 工具,就可以拥有一些预设的记录功能,作为中大型系统来说,java.util.logging 工具可能不足,但作为一个简单的记录工具,java.util.logging 是个可以考虑的对象。