2010-08-01 145 views
2

我有一個方法,我必須返回一個二維字符串數組。如何在java中返回一個二維字符串數組?

的該方法的代碼的部分是如下: -

public String[][] retrieveData(){ 
try{ 
    int noOfRows = 0; 
    pstmt = con.prepareStatement("select * from category"); 
    ResultSet rs = pstmt.executeQuery(); 
    while(rs.next()) 
    noOfRows++; 
    rs.first(); 
    categoryContent = new String[noOfRows][noOfCols]; 
    for(int i = 0 ; i < noOfRows ; i++){ 
    for(int j = 0 ; j < noOfCols ; j++){ 
    if(j == 0){ 
    Integer categoryNo = new Integer(rs.getInt(1)); 
    categoryContent[i][j] = categoryNo.toString(); 
    } 
    else{ 
    categoryContent[i][j] = rs.getString(j+1); 
    } 
    } 
    rs.next(); 
    } 
    return categoryContent ; 
} 
catch(Exception e){ 
    e.printStackTrace(); 
} 
} 

對此我在編譯時得到的錯誤如下: -

 
I:\DynamicWebpageCreator\WEB-INF\classes>javac *.java 
Category.java:134: missing return statement 
     public String[][] retrieveData(){ 
             ^** 
1 error 

請儘快幫助我。我被困住了。 所有的答案非常感謝!

回答

4

如果拋出異常,您將打印堆棧跟蹤,但不會返回任何內容。這正是編譯器所抱怨的。

一般來說,「處理」這樣的例外是非常糟糕的主意

  • 登錄的地方不僅僅是控制檯更合適的任何異常信息
  • 不要捕捉裸Exception - 具體抓例外
  • 如果你不能真正處理異常,讓它沿着調用堆棧

在這種情況下,我建議你應該改變你的方法來聲明哪些異常可能被拋出,並刪除try/catch塊。

如果你真的想要捕捉異常(特定的,心智),那麼你需要計算出你想要返回的情況。

+0

非常感謝... 我會改變我處理異常的方式...... :) – shahensha 2010-08-01 08:52:55

0

你已經指出try語句中的return命令嘗試這種方式,它將工作。

public int x(){ 

    try{ 

    }catch (Exception e){} 

    return x; 
}