这个问题与java异常有关,为什么有一些情况下,即使异常被捕获并且没有exit()语句,当抛出异常时程序仍然退出? 我的代码看起来是这样的处理java异常
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)
给出异常的堆栈跟踪将会很有帮助。 – Bozho 2010-04-23 17:41:16
Noona,你在下面给了很多很棒的帮助。为什么不回报这个好处并且提出好的答案并且接受最好的答案? – 2010-04-23 20:29:42