我这里有一个简单的程序:
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 语句中创建了新对象,即使没有发生异常?谢谢你们。
答案 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块的基本工作。