这里有一个简单的程序:
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语句中创建了新对象?谢谢大家。
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);
您需要了解try-catch finally块是如何工作的来回答这个问题。如果你读过这些区块,你自己就能回答这个问题。但为了帮助您做到这一点,如果没有发生异常,catch块将不会执行,因此不会创建对象
对象是在catch块中创建的,所以如果这个块没有被执行,对象也不会被创建。
这个链接解释了try-catch finally块的基本工作。