我正在使用套接字的Android應用程序。我有一個名爲initializeStreams()的函數,它打開套接字並嘗試連接。如果無法建立連接,則此函數將引發ConnectException。但由於某種原因,在調用initializeStreams()的代碼中,該代碼有一個用於ConnectException的catch塊,該日誌打印出自己的異常堆棧跟蹤,而不是去catch塊。儘管正在拋出確切的異常,但catch塊永遠不會被觸及。下面的代碼:我有一個ConnectException,由於某種原因未被捕獲
的try塊:
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();
}
我不知道這一點,所以任何幫助,將不勝感激。
由於您在代碼中發佈的唯一套接字操作不會拋出ConnectException,因此我們無法弄清楚爲什麼發生這種情況。發佈其餘的代碼。 – Th0rndike
是的。在打印套接字初始化之前的日誌,然後打印ConnectException堆棧跟蹤,而不是在catch塊中的日誌。 initializeStreams()是拋出ConnectException的唯一函數,第一個代碼片段是唯一調用該函數的地方。 – aakbari1024
你是什麼意思?該套接字操作是引發異常的那個,它在堆棧跟蹤中是這樣說的,而且這是目前我的程序中唯一的套接字操作。 – aakbari1024