首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何防止将XML解析错误写入System.err(stderr)?

防止将XML解析错误写入System.err(stderr)的方法是通过自定义错误处理机制。以下是一个简单的Java示例,演示如何使用SAX解析器解析XML文件并在遇到错误时不将错误写入System.err(stderr)。

首先,创建一个自定义的ErrorHandler类,实现org.xml.sax.ErrorHandler接口:

代码语言:java
复制
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class CustomErrorHandler implements ErrorHandler {
    @Override
    public void warning(SAXParseException exception) throws SAXException {
        // 处理警告
    }

    @Override
    public void error(SAXParseException exception) throws SAXException {
        // 处理错误
    }

    @Override
    public void fatalError(SAXParseException exception) throws SAXException {
        // 处理致命错误
    }
}

接下来,使用SAX解析器解析XML文件,并将自定义的ErrorHandler实例传递给解析器:

代码语言:java
复制
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;

public class Main {
    public static void main(String[] args) {
        try {
            XMLReader xmlReader = XMLReaderFactory.createXMLReader();
            xmlReader.setErrorHandler(new CustomErrorHandler());
            xmlReader.parse("path/to/your/xml/file.xml");
        } catch (SAXException | IOException e) {
            // 处理异常
        }
    }
}

在上述示例中,我们创建了一个名为CustomErrorHandler的自定义错误处理器,并在解析XML文件时将其传递给SAX解析器。这样,当遇到XML解析错误时,错误将被传递给CustomErrorHandler进行处理,而不是被写入System.err(stderr)。

总结一下,要防止将XML解析错误写入System.err(stderr),需要自定义错误处理机制并将其传递给SAX解析器。这样,可以更灵活地处理XML解析错误,而不会将错误信息写入控制台。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 全网最全Linux 运行jar包的几种方式

    nohup java -jar xxx.jar & nohup 即 no hang up 不挂断 ,关闭SSH客户端连接,程序不会中止运行 缺省情况下该作业的所有输出被重定向到nohup.out的文件中,如何让输出的内容重定向到指定的文件呢...所有写入它的内容都会永远丢失,尝试从它那儿读取内容则什么也读不到。...也就是所有产生的日志将被丢弃 ​ 2>&1 符号>&是一个整体代表标准错误2重定向到标准输出1,如果是2>1的话,代表标准错误输出到文件1,而不是重定向到标准输出流 ​ 先了解下1和2在...(stderr) 2 2> 或 2>> System.err /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0 ​ 从上表看出,平常使用的 echo 'hello...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站立刻删除。

    5.3K20

    Java基础17:Java IO流总结

    你可以把InputStream包装到PushbackInputStream中,之后可以读取过的数据推回到流中重新读取,在解析过程中有时候这样做很方便。...这两个类允许你从文件开始到文件末尾一次读取一个字节或者字符,或者读取到的字节写入到字节数组或者字符数组。你不必一次性读取整个文件,相反你可以按顺序地读取文件中的字节和字符。...Java IO管道示例 这是一个如何PipedInputStream和PipedOutputStream关联起来的简单例子: //使用管道来完成两个线程间的数据点对点传递 @Test...System.err System.err是一个PrintStream流。System.err与System.out的运行方式类似,但它更多的是用于打印错误文本。...一些类似Eclipse的程序,为了让错误信息更加显眼,会将错误信息以红色文本的形式通过System.err输出到控制台上。

    99900

    【Java基本功】浅析Java中IO流的概念和用法

    你可以把InputStream包装到PushbackInputStream中,之后可以读取过的数据推回到流中重新读取,在解析过程中有时候这样做很方便。...这两个类允许你从文件开始到文件末尾一次读取一个字节或者字符,或者读取到的字节写入到字节数组或者字符数组。你不必一次性读取整个文件,相反你可以按顺序地读取文件中的字节和字符。...Java IO管道示例 这是一个如何PipedInputStream和PipedOutputStream关联起来的简单例子: //使用管道来完成两个线程间的数据点对点传递 @Test...System.err System.err是一个PrintStream流。System.err与System.out的运行方式类似,但它更多的是用于打印错误文本。...一些类似Eclipse的程序,为了让错误信息更加显眼,会将错误信息以红色文本的形式通过System.err输出到控制台上。

    46420

    夯实Java基础系列16:一文读懂Java IO流和常见面试题

    你可以把InputStream包装到PushbackInputStream中,之后可以读取过的数据推回到流中重新读取,在解析过程中有时候这样做很方便。...这两个类允许你从文件开始到文件末尾一次读取一个字节或者字符,或者读取到的字节写入到字节数组或者字符数组。你不必一次性读取整个文件,相反你可以按顺序地读取文件中的字节和字符。...Java IO管道示例 这是一个如何PipedInputStream和PipedOutputStream关联起来的简单例子: //使用管道来完成两个线程间的数据点对点传递 @Test...System.err System.err是一个PrintStream流。System.err与System.out的运行方式类似,但它更多的是用于打印错误文本。...一些类似Eclipse的程序,为了让错误信息更加显眼,会将错误信息以红色文本的形式通过System.err输出到控制台上。

    52510

    Python重定向标准输入、标准输出和标

    标准输出和标准错误(通常缩写为 stdout 和 stderr)是建立在每个UNIX系统内的管道(pipe)。...打开一个新文件用于写入所有后续的输出重定向到我们刚打开的新文件上。 这样只会将输出结果“打印”到日志文件中;在IDE窗口中或在屏幕上不会看到输出结果。...还要注意我们既没有显示地关闭日志文件,也没有 stderr 设回它的初始值。...我们没有指定一个模块(象 binary.xml),而是指定“-”,这会让我们的脚本从标准输入而不是从磁盘上的一个特别文件中装入语法。(在下个例子中有更多关于它是如何发生的内容。)...我们要做的只是能够从标准输入中接收语法文件,并且我们可以所有其它的逻辑分散到另一个程序中。 那么当语法文件是“-”时我们的脚本是如何中从标准输入读入的呢?没什么神秘的,就是编码。

    4K10

    夯实Java基础系列16:一文读懂Java IO流和常见面试题

    你可以把InputStream包装到PushbackInputStream中,之后可以读取过的数据推回到流中重新读取,在解析过程中有时候这样做很方便。...这两个类允许你从文件开始到文件末尾一次读取一个字节或者字符,或者读取到的字节写入到字节数组或者字符数组。你不必一次性读取整个文件,相反你可以按顺序地读取文件中的字节和字符。...Java IO管道示例 这是一个如何PipedInputStream和PipedOutputStream关联起来的简单例子: //使用管道来完成两个线程间的数据点对点传递 @Test...System.err System.err是一个PrintStream流。System.err与System.out的运行方式类似,但它更多的是用于打印错误文本。...一些类似Eclipse的程序,为了让错误信息更加显眼,会将错误信息以红色文本的形式通过System.err输出到控制台上。

    1.4K21

    深入理解 Linux shell 中 2>&1 的含义

    (stderr) 2 2> 或 2>> System.err /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0 从上表看的出来,我们平时使用的 echo "hello..." > t.log 其实也可以写成 echo "hello" 1> t.log 关于2>&1的含义 含义:标准错误输出重定向到标准输出 符号>&是一个整体,不可分开,分开后就不是上述含义了。...比如有些人可能会这么想:2是标准错误输入,1是标准输出,>是重定向符号,那么"标准错误输出重定向到标准输出"是不是就应该写成"2>1"就行了?是这样吗?...如果是尝试过,你就知道2>1的写法其实是标准错误输出重定向到名为"1"的文件里去了 写成2&>1也是不可以的 为什么2>&1要放在后面 考虑如下一条shell命令 nohup java -jar app.jar...>log 2>&1 & 为什么2>&1一定要写到>log后面,才表示标准错误输出和标准输出都定向到log中?

    1.4K30

    Java避坑指南:ThreadPoolExecutor提交任务出现异常,异常是否吞掉,线程是否退出的不同影响

    ---- 前言 ---- ThreadPoolExecutor通过execute方法提交任务,任务执行过程中出现异常,会导致线程退出,异常信息即堆栈由标准错误(System.err)输出。...源码解析:ThreadPoolExecutor通过execute方法提交任务,任务执行过程中出现异常,会导致线程退出,异常信息即堆栈由标准错误(System.err)输出 ---- 通过 java.util.concurrent.ThreadPoolExecutor...如何避免呢?...("uncaughtException {}",t, e); } }) .build(); 源码解析...小结 ---- ThreadPoolExecutor通过execute方法提交任务,任务执行过程中出现异常,会导致线程退出,异常信息即堆栈由标准错误(System.err)输出。 如何避免呢?

    1.3K10

    3. 懂了这些,方敢在简历上说会用Jackson写JSON

    如何做到差异性?...Jackson通过此Feature做了容错,但是自己在使用时,请务必显示书写闭合 FLUSH_PASSED_TO_STREAM(true) 在使用带有缓冲区的I/O写数据时,缺少“临门一脚”是初学者很容易犯的错误...因为向磁盘、网络写入数据的时候,出于效率的考虑,操作系统(话外音:这是操作系统为之)并不是输出一个字节就立刻写入到文件或者发送到网络,而是把输出的字节先放到内存的一个缓冲区里(本质上就是一个byte[]...数组),等到缓冲区写满了,再一次性写入文件或者网络。...true:检测是否有重复字段名,若有,则抛出JsonParseException异常 false:不检测JSON对象重复的字段名,即:相同字段名都要解析 @Test public void test8(

    1.2K71

    Python全栈开发之常用模块

    转换成字节 pickle.dump() 接收一个Python数据类型,转换成字节,写入到文件中 No.8 logging 日志处理模块 日志的级别 默认情况下Python的logging模块日志打印到了标准输出中...from xml.etree import ElementTree as ET from xml.dom import minidom # 修改XML """ 解析XML的方式有两种 1.解析字符串方式...字符串解析XML对象,root代指XML文件的根节点 str_xml = open('xo.xml', 'r').read() root = ET.XML(str_xml) 2.解析文件方式 获取...0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲 stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄 preexec_fn:只在Unix平台下有效,用于指定一个可执行对象...、输出与错误(stdin, stdout, stderr)。

    96710

    Nodejs 中基于 Stream 的多文件合并实现

    本文先从一个 Stream 的基本示例开始,有个初步认识,中间会讲在 Stream 中什么时候会出现内存泄漏,及如何避免最后基于 Nodejs 中的 Stream 实现一个多文件合并为一个文件的例子。...,则写入的目标流将不会关闭,例如:process.stderr 和 process.stdout 可写流在 Nodejs 进程退出前永远不会关闭,所以需要监听错误事件,手动关闭可写流,防止内存泄漏。...Linux 下一切皆文件,为了测试,在创建可读流时,你可以不创建 test1.txt 文件,让可读流自动触发 error 事件并且 writeable 的 close 方法注释掉,通过 linux 命令...test2.txt 这个文件 fd 将会一直打开,除非进程退出,所以重要的事情再说一遍,一定要做好错误监听手动关闭每个写入流,以防止 “内存泄漏”。...如何多个文件通过 Stream 合并为一个文件,也是通过这种方式,一开始可写流处于打开状态,直到所有的可读流结束,我们再将可写流给关闭。

    2.6K30

    揭秘C语言文件操作:文件读写、最佳实践、权限管理和安全策略

    通过重要的数据保存到文件中,可以防止数据丢失,当系统崩溃或数据损坏时,可以通过读取文件中的数据进行恢复。文件也可以用于定期备份数据,以防止意外情况导致的数据丢失。...5.2、文件操作的异常处理(使用perror函数和错误码)C语言文件操作的异常处理可以使用perror函数和错误码来实现。perror函数用于错误信息打印到标准错误流(stderr)中。...如果文件打开失败,可以使用perror函数打印错误信息,或者使用fprintf函数错误信息写入到标准错误stderr中。...文件操作的标准错误处理:学习如何使用perror、fprintf等函数打印错误信息,以及如何处理文件操作中可能发生的各种错误和异常情况。...文件的批量操作:了解如何处理多个文件,如批量读取文件夹中的文件、批量写入文件等。文件锁和并发访问:了解如何使用文件锁来防止多个进程或线程同时访问同一个文件,以确保文件的安全性和一致性。

    29610
    领券