2015-11-02 84 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。 –