Ste*_*tef 1 java sockets nio exception
使用Java 1.7,以下代码
try
{
sck = SocketChannel.open();
sck.configureBlocking(false);
sck.connect(new java.net.InetSocketAddress(**<bad remote ip address>**, remote_port));
sel = Selector.open();
...
}
catch (IOException e)
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果远程地址是一个坏DNS(例如),似乎没有捕获异常.我错过了什么?
的UnresolvedAddressException是不是一个子类IOException,这就是为什么你会不会抓住它,如果它抛出.
UnresolvedAddressException是的子类IllegalArgumentException,如图所示这里,所以尽量捕捉:
UnresolvedAddressException 本身,因为首先捕获最具体的异常类型总是更好的做法Exception 如果你真的不关心你捕获的异常,因为你总是可以暂停程序或解决这个问题编辑:您可能错过了该异常,因为编译器没有强制您捕获它.那是因为它UnresolvedAddressException是在执行过程中RuntimeException引起攻击的异常类型.不必从中获取异常,例如,必须捕获,这就是为什么您的编译器可能会告诉您首先将代码包装到try-catch块中.RuntimeExceptionIOException
| 归档时间: |
|
| 查看次数: |
8665 次 |
| 最近记录: |