java基础(System.err和System.out)详解

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技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Spring Boot整合JPA使用多个数据源的方法步骤

    下面是关于Spring Boot整合JPA使用多个数据源的详细步骤和示例。 一、添加相关依赖 首先,需要在pom.xml文件中添加相关的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta…

    Java 2023年5月20日
    00
  • Java中泛型学习之细节篇

    Java中泛型学习之细节篇 泛型擦除 在Java中,泛型实现是基于类型擦除的。 当我们在定义一个泛型类或泛型方法时,编译器会将其中的参数类型替换成Object类型。这意味着,在运行时,我们无法再获取原始的参数类型。 举个例子,下面这个泛型类在编译后会被擦除: public class Generic<T> { private T t; publi…

    Java 2023年5月26日
    00
  • 使用Java构造和解析Json数据的两种方法(详解一)

    使用Java构造和解析JSON数据的两种方法有:使用Java的JSONObject和JSONArray类和使用第三方库Gson。 使用Java的JSONObject和JSONArray类 在使用该方法前,需要先导入JSON库,例如org.json库。 构造JSON数据 使用JSONObject和JSONArray类可以方便地构造JSON数据。JSONObje…

    Java 2023年5月26日
    00
  • Springboot如何使用Aspectj实现AOP面向切面编程

    下面我将为你详细讲解如何使用Aspectj实现AOP面向切面编程。 什么是AOP? AOP,全称为Aspect Oriented Programming,即面向切面编程。它是一种编程思想,与OOP(面向对象编程)相对。AOP的主要优势在于能够将系统中的横切关注点(例如日志输出、权限校验、事务管理等)与核心业务逻辑分离。从而方便开发复用性更强的组件。Aspec…

    Java 2023年5月19日
    00
  • 解决Springboot启动报错:类文件具有错误的版本61.0,应为 52.0

    针对SpringBoot启动报错“类文件具有错误的版本61.0,应为52.0”,按照以下步骤进行解决: 1.问题原因 这个问题通常是因为编译器和运行环境版本不一致。使用较高版本的编译器编译的类文件,在低版本的运行环境中无法运行,导致启动失败。 2.解决过程 2.1 确认编译器和运行环境版本 首先需要确认代码使用的编译器版本以及部署环境的JDK版本是否一致。可…

    Java 2023年5月19日
    00
  • Spring Boot自动注入的原理分析

    SpringBoot自动注入的原理分析 在Spring Boot中,自动注入是一个非常重要的特性。它可以帮助我们更方便地管理Bean之间的依赖关系。在本攻略中,我们将详细讲解Spring Boot自动注入的原理分析。 1. 自动注入的原理 Spring Boot的自动注入是通过依赖注入(DI)实现的。在DI中,对象之间的依赖关系由容器负责管理。当一个对象需要…

    Java 2023年5月14日
    00
  • Java 替换字符串中的回车换行符的方法

    Java 替换字符串中的回车换行符的方法可以通过使用正则表达式来实现。以下是完整的示例攻略: 方法一:使用 replaceAll() 方法 可以使用 replaceAll() 方法将字符串中的回车换行符替换为其他内容。需要使用正则表达式 “\r|\n” 匹配回车换行符,并使用 replaceAll() 方法将其替换为需要的内容。具体示例代码如下: Strin…

    Java 2023年5月27日
    00
  • 使用ObjectMapper把Json转换为复杂的实体类

    使用ObjectMapper把JSON转换为复杂的实体类的方法如下: 1.引入ObjectMapper库 在项目中引入ObjectMapper依赖即可,可以使用Maven或Gradle等构建工具。 Maven: <dependency> <groupId>com.fasterxml.jackson.core</groupId&g…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部