如果可能的话,如何限制在控制台中打印通用异常消息?
How, if possible, can one restrict generic exception messages from printing in the console?
下面方法的目标是打开一个文件并在返回列表之前将一个字符串列表设置为等于它的行。如果由于某种原因无法打开或读取文件,我想打印消息,"Error reading ''..."
static List<String> readFile (String filename) {
System.out.println("Opening file \'" + filename + "\'...\n");
List<String> lines = null;
try {
Charset charset = Charset.forName("ISO-8859-1");
lines = Files.readAllLines(Paths.get(filename), charset);
}
finally {
catch (IOException e) {
System.out.println("Error reading \'" + filename + "\'...");
}
return lines;
}
我在 Windows 10 命令行中以文件名作为参数执行程序。它可以工作,但是,除了我的错误消息之外,还会向控制台显示另一条消息(由 JVM?)。这是命令和输出:
C:>java FileIO fake.txt
Opening file 'fake.txt'...
Error reading 'fake.txt'...fake.txt
Exception in thread "main" java.lang.NullPointerException
at FileIO.display(FileIO.java:35)
at FileIO.main(FileIO.java:14)
我是 Java 和 Windows 命令行的新手。我在 Linux 终端中使用 C++ 和 Python 有一些经验。
是否可以阻止这些消息打印到控制台或以不同的方式处理来自用户的错误文件?我的理解是 Files.readAllLines() 需要 IOException。
我不明白为什么默认假设开发人员不会创建要显示给用户的错误消息。还是假设用户不 运行 控制台应用程序并且唯一会看到这些异常的人是开发人员?
问题是您正在捕获异常并假装它的发生无关紧要,即您继续使用 null
值并尝试在显然行不通时显示它。
您应该只在准备好处理异常时才捕获它。即在调用方法中。
public static void main(String... args) {
try {
List<String> lines = readFile(args[0]);
// don't try to display the lines of a file if it failed with an IOException
display(lines);
} catch(IOException ioe) {
System.err.println("Cannot display file " + ioe);
}
}
当您遇到错误时,您应该打印出它是什么,因为错误可能会告诉您一些有用的信息。
注意:即使在 C++ 中,这也是处理异常的最佳方式。
下面方法的目标是打开一个文件并在返回列表之前将一个字符串列表设置为等于它的行。如果由于某种原因无法打开或读取文件,我想打印消息,"Error reading ''..."
static List<String> readFile (String filename) {
System.out.println("Opening file \'" + filename + "\'...\n");
List<String> lines = null;
try {
Charset charset = Charset.forName("ISO-8859-1");
lines = Files.readAllLines(Paths.get(filename), charset);
}
finally {
catch (IOException e) {
System.out.println("Error reading \'" + filename + "\'...");
}
return lines;
}
我在 Windows 10 命令行中以文件名作为参数执行程序。它可以工作,但是,除了我的错误消息之外,还会向控制台显示另一条消息(由 JVM?)。这是命令和输出:
C:>java FileIO fake.txt
Opening file 'fake.txt'...
Error reading 'fake.txt'...fake.txt
Exception in thread "main" java.lang.NullPointerException
at FileIO.display(FileIO.java:35)
at FileIO.main(FileIO.java:14)
我是 Java 和 Windows 命令行的新手。我在 Linux 终端中使用 C++ 和 Python 有一些经验。
是否可以阻止这些消息打印到控制台或以不同的方式处理来自用户的错误文件?我的理解是 Files.readAllLines() 需要 IOException。
我不明白为什么默认假设开发人员不会创建要显示给用户的错误消息。还是假设用户不 运行 控制台应用程序并且唯一会看到这些异常的人是开发人员?
问题是您正在捕获异常并假装它的发生无关紧要,即您继续使用 null
值并尝试在显然行不通时显示它。
您应该只在准备好处理异常时才捕获它。即在调用方法中。
public static void main(String... args) {
try {
List<String> lines = readFile(args[0]);
// don't try to display the lines of a file if it failed with an IOException
display(lines);
} catch(IOException ioe) {
System.err.println("Cannot display file " + ioe);
}
}
当您遇到错误时,您应该打印出它是什么,因为错误可能会告诉您一些有用的信息。
注意:即使在 C++ 中,这也是处理异常的最佳方式。