我正在阅读有关协议的课程,但我不明白为什么要使用try / catch来获取ipv4地址。
代码:
import java.net.Inet4Address;
import java.net.UnknownHostException;
public class P1 {
public static void main(String[] args) {
try{
System.out.println(Inet4Address.getLocalHost().getHostAddress());
}catch(UnknownHostException e){
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
“getLocalHost”方法的签名如下所示:
InetAddress java.net.InetAddress.getLocalHost() throws UnknownHostException
这是一个所谓的“已检查异常”,意味着在执行该方法时可能会发生异常(UnknownHostException)。因此,方法的每个调用者(在您的示例中为main方法)都应该以某种方式处理该异常。 “getLocalHost”的设计者定义了这个错误是至关重要的,必须由调用者处理,这就是他们添加“抛出UnknownHostException”的原因。
当你使用try / catch时,你可以在catch部分中定义在UnknownHostException情况下会发生什么。
例如,您可以向控制台写一条可理解的消息并退出应用程序:
package com.example;
import java.net.Inet4Address;
import java.net.UnknownHostException;
public class P1 {
public static void main(String[] args) {
try {
System.out.println(Inet4Address.getLocalHost().getHostAddress());
} catch (UnknownHostException e) {
System.err.println("An error occurred while fetching IP address");
System.exit(1);
}
}
}
另一方面,你不会被迫立即处理异常。您还可以定义您的方法也会抛出UnknownHostException。这意味着调用您的方法的人必须处理它。 方法的调用者还可以定义他/她的方法抛出UnknownHostException。等等。
package com.example;
import java.net.Inet4Address;
import java.net.UnknownHostException;
public class P1 {
public static void main(String[] args) throws UnknownHostException {
System.out.println(Inet4Address.getLocalHost().getHostAddress());
}
}
由于该方法已经是主要切入点,因此无法进一步冒泡。这意味着如果不使用try / catch,默认情况下会在控制台中显示UnknownHostException。