簡體   English   中英

我有一個由於某種原因沒有被捕獲的ConnectException

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM