catch语句中的对象创建

时间:2013-08-07 07:31:04

标签: java exception-handling out-of-memory try-catch-finally

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

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 语句中创建了新对象,即使没有发生异常?谢谢你们。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

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