我正在尝试在我的android程序中发生异常时打印一些东西,在我的socket的异常块中。
但是,即使我提供了无效的IP地址,我的异常也没有被调用。
try{
SocketAddress socketAddress = new InetSocketAddress("78.137.18" , 8364);
}
catch (Exception e)
{
System.out.println("ERROR");
}
答案 0 :(得分:3)
这实际上是一个有效的IP地址。
mslade@mickpc:~$ perl -nle 'use Socket; print inet_ntoa(inet_aton($_))'
78.137.18
78.137.0.18
InetSocketAddress
的构造函数也将接受主机名。
如果你想专门拒绝那些地址(但你确定吗?)那么你必须编写代码来检查地址字符串,也许是用正则表达式。
答案 1 :(得分:1)
InetSocketAddress
创建一个表示套接字地址的对象。它确实将主机名解析为IP地址,但它不会连接也不会绑定到指定的地址。这就是为什么你没有得到例外。该地址在语法上是正确的,并且永远不会进行连接尝试,因此没有理由抛出异常。