尝试/ catch来获取ipv4地址

时间:2017-11-27 09:22:22

标签: java protocols ipv4

我正在阅读有关协议的课程,但我不明白为什么要使用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();
        }
    }
}

1 个答案:

答案 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。