JAVA基础:System.out和System.err详解
简介
Java中有两个常用的标准输出命令,它们分别是System.out和System.err。
- System.out: 标准输出流,用于向控制台输出信息。
- System.err: 标准错误流,用于向控制台输出错误信息。
System.out
在Java程序中,可以使用System.out进行输出操作,例如:
System.out.println("Hello World!");
上述语句可将字符串“Hello World!”输出到控制台。
System.err
在Java程序中,可以使用System.err输出错误信息。例如:
System.err.println("Error: 找不到文件!");
上述语句输出“Error: 找不到文件!”错误信息到控制台。
区别
虽然System.out和System.err都可以向控制台输出信息,但两者之间存在显著的区别。
- System.out是标准输出流,一般用于输出程序正常执行的信息,例如程序运行的状况、结果等等。
- System.err是标准错误流,一般用于输出程序的错误信息,例如运行时发生的异常、无法识别的命令等等。
示例
输出日志到文本文件
通常,程序需要记录日志,以便在需要时进行排查、定位问题。可以使用System.out和System.err将日志信息输出到文件系统中。
import java.io.*;
public class LogWriter {
static final String LOG_FILE_PATH = "log.txt";
static final PrintStream OUT_STREAM = System.out;
static final PrintStream ERR_STREAM = System.err;
public static void main(String[] args) {
// 重定向输出流到文件
try {
File logFile = new File(LOG_FILE_PATH);
logFile.createNewFile();
PrintStream fileOut = new PrintStream(new FileOutputStream(logFile));
System.setOut(fileOut);
System.setErr(fileOut);
} catch (IOException e) {
e.printStackTrace();
}
// 输出日志
OUT_STREAM.println("程序运行正常");
ERR_STREAM.println("程序出现错误");
}
}
上述程序会将“程序运行正常”输出到控制台,将“程序出现错误”输出到控制台。同时,上述程序还会将输出流和错误流重定向到“log.txt”文件中。
使用System.err诊断代码问题
由于System.err用于输出程序的错误信息,因此可以利用它来诊断代码中的问题。例如,下面代码会抛出一个异常,并输出该异常信息:
public class ExceptionDemo {
public static void main(String[] args) {
try {
int i = Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.err.println("无法转换字符串为整数:" + e.getMessage());
}
}
}
上述程序抛出NumberFormatException异常,异常信息(包含堆栈跟踪)将输出到System.err中。这可以帮助开发者更方便地定位bug。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java基础(System.err和System.out)详解 - Python技术站