[英]I have a ConnectException that isn't being caught for some reason
我正在使用套接字的Android应用程序上工作。 我有一个名为initializeStreams()的函数,它将打开套接字并尝试连接。 如果无法建立连接,此函数将引发ConnectException。 但是由于某种原因,在调用initializeStreams()的代码中,该代码具有ConnectException的catch块,日志将打印出自己的异常堆栈跟踪信息,而不是转到catch块。 即使抛出了确切的异常,也根本不会到达catch块。 这是代码:
尝试块:
try {
initializeStreams();
/* other code */
} catch (ConnectException e) {
Log.i(TAG, "caught connect exception");
}
initializeStreams():
public void initializeStreams() throws ConnectException {
try {
Log.i(TAG, "Attempting to connect");
requestSocket = new Socket(SERVER_ADDR, PORT);
/* other code */
} catch (IOException e) {
e.printStackTrace();
}
我无法弄清楚,因此将不胜感激。
您需要链接您的Exception,将其扔到catch
块中。 请尝试以下操作:
public void initializeStreams() throws ConnectException {
try {
Log.i(TAG, "Attempting to connect");
requestSocket = new Socket(SERVER_ADDR, PORT);
/* other code */
} catch(ConnectException e){
throw e;
}
catch (IOException e) {
e.printStackTrace();
}
ConnectException
扩展了SocketException
,后者又扩展了IOException,
因此initializeStreams()
对IOException
捕获将捕获ConnectException.
我将完全删除try/catch
块:没有连接时从此方法干净地返回没有什么意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.