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日

相关文章

  • OkHttp Address already in use: no further information异常

      说下场景,我的程序在多线程场景下一个循环体中处理业务数据,其中需要调用一个外部http接口去获取一些数据,程序总会在在本地执行一段时间后会抛出Address already in use: no further information错误。   这是大量并发场景下出现的问题,经过查阅原因是OkHttp的链接没有被有效回收和复用导致的端口资源占用,okHt…

    Java 2023年4月18日
    00
  • Java实现8种排序算法的示例代码

    对于“Java实现8种排序算法的示例代码”的完整攻略,可以分为以下步骤: 1.选择8种排序算法 根据排序的特点和实现的难易程度,可以选择如下达八种排序算法: 冒泡排序 快速排序 插入排序 希尔排序 选择排序 堆排序 归并排序 基数排序 2.撰写示例代码 根据排序算法的特点和实现方式,撰写每种排序算法的示例代码。在代码注释中,可以讲解算法的主要思想和核心代码的…

    Java 2023年5月19日
    00
  • springboot入门之profile设置方式

    下面我来详细讲解“springboot入门之profile设置方式”的完整攻略。 一、什么是profile 在Spring Boot项目中,profile是一种方便在不同环境中运行应用程序的方式。可以通过定义不同的配置文件来区分不同的环境,比如开发环境、测试环境、生产环境等等。 二、profile的配置方式 Spring Boot提供了多种配置profile…

    Java 2023年5月19日
    00
  • Java Pattern与Matcher字符串匹配案例详解

    Java Pattern与Matcher字符串匹配案例详解 一、背景介绍 在Java中,支持字符串的正则匹配。在字符串中,可以使用\d表示数字,\w表示字母数字下划线,\s表示空格或换行符等等特殊字符。而Java中提供了Pattern和Matcher类,用来实现正则表达式的匹配操作。 二、Pattern类 Pattern类是正则表达式编译后的表示形式。在Ja…

    Java 2023年5月23日
    00
  • Java运行时环境之ClassLoader类加载机制详解

    Java运行时环境之ClassLoader类加载机制详解 1. 背景 在Java程序运行过程中,Java虚拟机会将Java程序的.class字节码文件加载进内存中执行。然而,如果所有的.class文件都加载进内存,会导致内存占用过高,因此Java采用了ClassLoader类加载机制,只有在需要使用某个Class时才会动态加载进内存。本文将详细讲解Class…

    Java 2023年5月26日
    00
  • Spark SQL配置及使用教程

    Spark SQL配置及使用教程 什么是Spark SQL? Spark SQL是运行在Apache Spark之上的模块,它提供结构化数据处理的能力,可以让用户使用SQL语句或DataFrame API处理结构化数据,同时可以与其他Spark模块集成使用。 Spark SQL的配置 1. 坐标依赖配置 <dependency> <grou…

    Java 2023年6月2日
    00
  • Java实现简单的学生教师管理系统

    Java实现简单的学生教师管理系统 简介 学生教师管理系统是一个典型的管理信息系统。本文将详细介绍如何用Java实现一个简单的学生教师管理系统。 技术方案 本系统采用Java Swing框架实现用户界面,使用MVC架构进行设计。持久化数据使用SQLite数据库,用JDBC进行连接和操作。 功能模块 本系统主要包括以下功能模块: 登录模块:登录检验和权限控制。…

    Java 2023年5月19日
    00
  • 一文详解JavaWeb过滤器(Filter)

    一文详解JavaWeb过滤器(Filter) 什么是JavaWeb过滤器? JavaWeb过滤器(Filter)是一个可以拦截客户端与服务器之间的请求和响应的组件,它的作用就像一个保镖,协助我们控制和管理请求和响应。 过滤器的作用 过滤器可以用来完成以下功能: 认证用户访问权限 过滤违禁词汇和表情等内容 对请求或响应进行加密、压缩、解压 记录请求和响应信息 …

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