2015-11-02 91 views
1

晚上好。你看,我这有很大的麻烦,看看它无解,但我知道一定有解决这个办法...从try/catch块内部返回变量

public static int[] prices() throws Exception { 
    try { 
     Connection con = getConnection(); 
     Statement search = con.createStatement(); 
     ResultSet rs = search.executeQuery("SELECT nomeProd FROM main;"); 
     rs.last(); 
     int k = rs.getRow(); 
     rs.beforeFirst(); 
     int prices[] = new int[k]; 

     /* 
     for(int i = 1; i <= k; i++) { 

     } 
     */ 

     return prices; 
    } catch(Exception e) { 
     System.out.println(e); 
    } 
} 

所以,我需要的是从内部返回数组价格try-catch块或我将无法获得变量“k”。如果我在try块之前将k初始化为0,并在catch块之后创建数组,那么我将无法访问ResultSet变量(嗯,是的,我可以连接,重新创建语句和结果集,但是这可能会让我更头痛)。

任何人都可以帮助我吗?谢谢!

回答

4

只需在try/catch块之外声明您的变量,那么它们将在块的内部和外部均可访问。例如:

Connection con = null; 
try { 
     con = getConnection(); 
     // rest of code on the same lines 

} 
+0

因此,只有在尝试块之前初始化Connection为null才能完成这项工作? –

+0

@TomásDornasPerone我的回答是关于如何扩大变量的可见性。将连接设置为null,除默认值为空的变量声明外,将不执行任何操作。 –

+0

谢谢,我已经声明了try/catch之外的所有变量,现在它都可以正常工作。谢谢Juned。 –