[英]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.