Этот вопрос связан с исключениями Java, почему в некоторых случаях, когда выбрасывается исключение, программа завершает работу, даже если исключение было перехвачено и не было оператора exit ()?
мой код выглядит примерно так
void bindProxySocket(DefaultHttpClientConnection proxyConnection, String hostName, HttpParams params)
{
if (!proxyConnection.isOpen())
{
Socket socket = null;
try {
socket = new Socket(hostName, 80);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try
{
proxyConnection.bind(socket, params);
}
catch(IOException e)
{
System.err.println ("couldn't bind socket");
e.printStackTrace();
}
}
}
, а затем
Я называю этот метод так:
bindProxySocket(proxyConn, hostName, params1);
но программа закрывается, хотя я хочу обработать исключение, делая что-то еще, может ли это быть из-за того, что я не заключил вызов метода в предложение try catch? что произойдет, если я поймаю исключение снова, хотя оно уже есть в методе? и что мне делать, если я хочу очистить ресурсы в предложении finally, только если происходит исключение, и в противном случае я хочу продолжить работу с программой? Я предполагаю, что в этом случае мне нужно включить весь кусок кода, пока я не смогу очистить ресурсы в операторе try или я могу сделать это в операторе исключений дескриптора?
некоторые из этих вопросов касаются этого конкретного случая, но я хотел бы получить подробный ответ на все мои вопросы для дальнейшего использования. спасибо
редактирование:
java.net.UnknownHostException: www.dsewew324f.com
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at homework3.Proxy.bindProxySocket(Proxy.java:666)
at homework3.Proxy$3.handle(Proxy.java:220)
at org.apache.http.protocol.HttpService.doService(HttpService.java:293)
at org.apache.http.protocol.HttpService.handleRequest(HttpService.java:212)
at homework3.Proxy.start(Proxy.java:472)
at homework3.Proxy.main(Proxy.java:1282)
Exception in thread "main" java.lang.IllegalArgumentException: Socket may not be null
at org.apache.http.impl.DefaultHttpClientConnection.bind(DefaultHttpClientConnection.java:80)
at homework3.Proxy.bindProxySocket(Proxy.java:674)