我有一个ConnectException,由于某种原因没有被捕获

时间:2012-07-03 15:13:14

标签: java android sockets exception connectexception

我正在使用套接字的Android应用程序。我有一个名为initializeStreams()的函数,它打开套接字并尝试连接。如果无法建立连接,则此函数将抛出ConnectException。但由于某种原因,在调用具有ConnectException的catch块的initializeStreams()的代码中,日志打印出自己的异常堆栈跟踪而不是去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();
    }

我无法弄清楚这一点,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:3)

您需要将您的异常链接到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();
}

答案 1 :(得分:2)

ConnectException扩展了SocketException,而IOException,又扩展了IOException,因此initializeStreams()ConnectException.的捕获量会抓住try/catch我会删除该{{1}} {{1}}完全阻止:没有连接就没有多少从这个方法中回归。