gpt4 book ai didi

java - 在处理异常时初始化格式化程序?

转载 作者:行者123 更新时间:2023-12-01 19:31:21 24 4
gpt4 key购买 nike

我是 Java 的绝对初学者,如果这个问题看起来很荒谬,我深表歉意。我面临以下问题:

当我尝试时

public class oranges {
public static void main(String[] args) {
Formatter x=new Formatter("note1.txt");
x.close();}}

它说存在未处理的异常。但是当我尝试时

public class oranges {
public static void main(String[] args) {
Formatter x;
try {
x=new Formatter("note1.txt");
}
catch(Exception e) {
System.out.println("Error");
}
x.close();}}

它表示 x 尚未初始化。如何在处理异常时初始化 x?我不想使用单独的方法来实现此目的。

最佳答案

如果构造函数抛出异常,则说明您没有对象,因此无需关闭任何内容。

您有多种选择:

// Cascade exception to caller (JVM will print it for you when main() throws exception)
public static void main(String[] args) throws Exception {
Formatter x = new Formatter("note1.txt");
// use x here
x.close();
}
// Put close() inside try block
public static void main(String[] args) {
try {
Formatter x = new Formatter("note1.txt");
// use x here
x.close();
} catch (Exception e) {
System.out.println("Error: " + e); // Print the exception too
}
}
// Wrap in an unchecked exception
public static void main(String[] args) {
try {
Formatter x = new Formatter("note1.txt");
// use x here
x.close();
} catch (Exception e) {
throw new RuntimeException("Error", e); // Include original exception as the cause
}
}
// Initialize variable to null
public static void main(String[] args) {
Formatter x = null;
try {
x = new Formatter("note1.txt");
// use x here
} catch (Exception e) {
e.printStackTrace(System.out); // Better way to print the exception
}
if (x != null) {
// or use x here
x.close();
}
}
// If formatter is auto-closeable, use try-with-resources
public static void main(String[] args) {
try (Formatter x = new Formatter("note1.txt")) {
// use x here
} catch (Exception e) {
System.out.println("Error: " + e);
}
}

对于具有 main() 方法的简单程序,我推荐第一个。

实际上,由于大多数异常都是不可恢复的,因此您几乎应该总是级联异常并让调用者处理它。如果检查了异常,但您不希望所有调用者都必须在方法上声明它,则可以捕获它并抛出未经检查的异常。

关于java - 在处理异常时初始化格式化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59705459/

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