0

我在这里有一个简单的程序:

public class Main {
    private static Connection connectON = null; 
    private static PreparedStatement preparedStatementON = null;

    public static void main (String args[]) throws Exception {        
    try{ 
        Class.forName("org.mariadb.jdbc.Driver");
        connectON = DriverManager.getConnection("jdbc:mysql:/234234/ /?"+"user t& d= 3"); 
        System.out.println("Trying to connect to online"+connectON);                 
        System.out.println( "-----MAIN----");
        BaseDataUploader da = new BaseDataUploader();da.readDataB ();
    }
    catch (Exception e) {
        BaseDataUploader da2  = new BaseDataUploader();  //loads data from DFA to base 
        da2.errorLog(e,0000);
        throw e;
    }
    finally { 
        if(preparedStatementON !=null)
            preparedStatementON.close();
        if(connectON !=null)
            connectON.close();
        }  
    }
}

现在我想知道即使没有发生异常,是否在catch语句中创建了新对象?多谢你们。

4

2 回答 2

1

只有在发生异常时才会执行 catch 块中的代码 - 因此,如果您在那里创建一个对象,则只有在捕获到异常时才会创建它。最终块中的代码始终执行。顺便说一句,比在这里发布问题要快得多的是自己尝试这样的事情:

        Object o = null;
        boolean throwIt = false; //or true
        try{

            if (throwIt)
                throw new Exception();
        }catch (Exception e){
            o = new Object();
        }

        System.out.println(o);
于 2013-08-07T07:40:35.123 回答
0

您需要了解 try-catch-finally 块如何回答这个问题。如果您了解这些块,您自己可以回答这个问题。但是为了帮助您,如果没有发生异常,则不会执行 catch 块,因此不会创建对象。
对象是在 catch 块中创建的,所以如果这个块没有被执行,对象也不会被创建。

这个链接解释了 try-catch-finally 块的基本工作。

于 2013-08-07T07:38:36.200 回答