gpt4 book ai didi

java - Android 未报告的异常 IOException 错误

转载 作者:行者123 更新时间:2023-11-30 00:56:18 26 4
gpt4 key购买 nike

我是 Android 应用程序开发的新手。最近,我正在编写一个能够显示基于 Ipify 的公共(public) ip 的应用程序.到目前为止,我已经:

  • 下载所需的jar文件并放入libs文件夹
  • 我也在gradle中编译文件
  • 然后我将所需的类导入到我的类中

如何使用 Ipify,根据其网站:

import org.ipify.Ipify;

public class HelloIP {
public static void main(String[] args) throws IOException {
System.out.println(Ipify.getPublicIp());
}
}

我编写了以下要从另一个类调用的方法:

public static String getPublicIp() throws IOException{
String ip = Ipify.getPublicIp();
return ip;
}

另一个类

//Get wifi
getWifiName wifiInfo = new getWifiName();
String myIP = wifiInfo.getPublicIp();

但是,我不断得到:

Error:(52, 43) error: unreported exception IOException; must be caught or declared to be thrown

我尝试修改代码,使用下面的try and catch,还是报同样的错误。

public static String getPublicIp() throws IOException{
String myip = Ipify.getPublicIp();
try{
return myip;
}
catch (IOException e){
System.out.println("General I/O exception: " + e.getMessage());
e.printStackTrace();
}
}

我不太擅长捕获和抛出异常,并且已经为此花了一整天。我不再有想法来修复这个错误..T.T

最佳答案

public static String getPublicIp() {
try{
return Ipify.getPublicIp();
}catch (IOException e){
System.out.println("General I/O exception: " + e.getMessage());
e.printStackTrace();
}
return null;
}

如果它没有帮助,请在您的 IDE 中清理项目。您可能缓存了一些数据,这可能是一个原因。

你的问题在另一个类!由于您已声明方法 getPublicIp() 以抛出 IOException,该类害怕收到 Exception,因此请求捕获它。

在 Java 中有两种类型的异常。选中和未选中。必须捕获已检查的异常。

在 Java 中,异常用于标记意外情况。例如,将非数字 String 解析为数字 (NumberFormatException) 或在 null 引用上调用方法 (NullPointerException).您可以通过多种方式捕捉它们。

未检查的 Exception 是那些扩展 RunTimeException 的。它们用于标记通常由用户输入引起的意外状态。它们不应该造成伤害,应该根据业务逻辑来解决。您不一定要捕获它们,但有时您应该。

另一方面,有 Checked Exception 标记危险情况。例如,应用程序无法打开文件。当发现这些情况很危险时,您必须捕获它们。

try{
//some code
} catch (NumberFormatException e1) {
e.printStackTrace() //very important - handles the Exception but prints the information!
} catch (NullPointerException e2) {
e.printStackTrace();
}

或者使用它们都扩展 Exception 的事实:

try {
//somecode
} catch (Exception e) {
e.printStackTrace;
};

或者从 Java 7 开始:

try {
//somecode
} catch (NullPointerException | NumberFormatException e) {
e.printStackTrace;
};

关于java - Android 未报告的异常 IOException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40105566/

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