gpt4 book ai didi

java - 声明的异常仍然抛出错误,必须捕获或声明抛出

转载 作者:行者123 更新时间:2023-12-02 04:57:06 25 4
gpt4 key购买 nike

首先,我不是 Java 程序员,我只是修改现有代码以满足我的需求,因此请耐心等待,因为我对 Java 的了解非常有限。

这是我的代码的一部分:

public String getIp() throws Exception {
URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(
whatismyip.openStream()));
String ip = in.readLine();
return ip;
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

现在,当我尝试调用 getIp() 时,出现编译失败:未报告的异常 java.lang.Exception;必须被捕获或声明为抛出

以下是调用 getIp() 的部分代码:

Phrase downloadDate = new Phrase();
downloadDate.add(new Chunk("On: " + new SimpleDateFormat("MMMM d, yyyy").format(new Date()), FONT_DATE));
downloadDate.add(new Chunk(" at " + new SimpleDateFormat("h:mm a z").format(new Date()), FONT_DATE));
Phrase downloader = new Phrase("This article was downloaded by: " + getEperson(), FONT_DATE);
String IP = getIp();
Phrase userIP = new Phrase("IP Address: " + IP, FONT_DATE);
Phrase userDownloadDate = new Phrase(downloadDate);
Paragraph downloadDetails = new Paragraph();
downloadDetails.add(downloader);
downloadDetails.add(downloadDate);
downloadDetails.add(userIP);

这可能是一个微不足道的问题,但我想知道为什么当它已经在 public String getIp()< 中声​​明时,我会遇到“必须捕获或声明为抛出”的错误

最佳答案

您的 getIp() 方法签名是:

public String getIp() throws Exception {

这意味着该函数有可能抛出异常。 throws子句用于指定函数可能抛出的各种异常。

当您调用此方法时,您必须专门处理所有可能出现的异常。喜欢:

try {
String ip = getIp();
} catch (Exception ex) {
// getIp() failed
}

或者,由于您在 getIp() 方法中使用了 try block ,如果您确定它不会抛出任何异常,那么您可以删除 throws 子句,例如:

public String getIp() {

并且您的代码应该可以工作。

还有一个越位说明:getIp() 方法并非在所有情况下都返回字符串。只需在其定义末尾添加 return ""; 即可避免运行时问题。

关于java - 声明的异常仍然抛出错误,必须捕获或声明抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28654728/

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