gpt4 book ai didi

java - 如何处理控制台应用程序中的异常

转载 作者:行者123 更新时间:2023-12-01 09:37:52 27 4
gpt4 key购买 nike

我有一个与硬件交互的控制台应用程序。我的想法是用堆栈跟踪记录所有异常,这样有值(value)的信息就不会因为没有到文件的管道而丢失。

但是如何处理该文件的位置呢?我不能每次都询问路径。

这就是为什么我认为只需将文件放在可执行文件旁边即可。但无法确定应用程序将驻留在哪里。我还没有找到“如何获取应用程序路径”的明确答案

I found: new java.io.File("").getAbsolutePath();但没有解释这是如何工作的。

And: getClass().getProtectionDomain().getCodeSource().getLocation().getPath();但运算符(operator)说这只是可能有效。是否有另一种方法来处理错误日志/获取应用程序路径的确定方法?

最佳答案

在所有类型的应用程序中记录异常的标准方法是使用标准日志记录框架之一并在应用程序外部定义其配置。异常将被记录为ERROR并进行适当处理。

有人可以建议,例如slf4j(日志记录接口(interface))和 logback(匹配的实现)一起使用,但其他也可以。

编写代码时,接口(interface)需要在编译时可用,因为代码是针对它进行编程和编译的:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClass {

private static final Logger LOGGER = LoggerFactory.getLogger(Myclass.class);

public void method() {
try {
...
} catch (IOException ex) {
LOGGER.error("method failed to do what was expected: {}", ex);
throw ex;
}

需要在运行时提供特定的实现(例如,在打包时添加到 jar 中)或在运行时添加到类路径中。

接下来,需要在运行时提供与特定实现相匹配的配置,对于 logback 来说可能如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>myapp.log</file>
<encoder>
<pattern>%logger{35} - %msg%n</pattern>
</encoder>
</appender>

<root level="error">
<appender-ref ref="FILE"/>
</root>
</configuration>

更多详细信息请参见:

关于java - 如何处理控制台应用程序中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com