我的程序为什么会出现unreachable statement异常?

时间:2022-03-12 11:53:05
在我的jsp中有如下程序: 
      <%! 

public   String   sqlQuery(String   num)   {   
        Connection   conn   =   null;   
        String   connStr;   
    try   {   
        connStr="jdbc:microsoft:sqlserver://10.1.72.15:1433;DatabaseName=test";//"jdbc:oracle:thin:@local:1521:orcl";   
        DriverManager.registerDriver(new   com.microsoft.jdbc.sqlserver.SQLServerDriver());   
        conn   =   DriverManager.getConnection(connStr,"sa",   "");   
        
        PreparedStatement   st   =   conn.prepareStatement("select   *   from   NEIKON_NEWS   where   id=?"); 
        st.setString(1,   num); 
        ResultSet   rs=st.executeQuery(); 
        Array   ry=rs.getArray(6); 
        String   content=(String)ry.getArray(); 
        return   content; 
        conn.close();   
    }catch(SQLException   ex)   {   
            System.out.println("Error   in   Connecting   to   the   Database   "+'\n'+ex.toString());   
    }   
}   

%>   
  <%           
                  String   id=request.getParameter("id"); 
                  String   context=sqlQuery(id); 
                        FCKeditor   oFCKeditor; 
                        oFCKeditor   =   new   FCKeditor(request,"content"); 
                        oFCKeditor.setBasePath("../../FCKeditor/"); 
                        oFCKeditor.setHeight("500"); 
                        //oFCKeditor.setWidth("500"); 
                        oFCKeditor.setValue("context"); 
                        out.print(oFCKeditor.create()); 
                        %> 
应该导入的包已经导入了.但是运行时出现 
          unreachable   statement和missing   return   statement两个错误. 
是不是我的程序哪块有问题,希望得到高手们的指点.

13 个解决方案

#1



st.setString(1,       num);   
ResultSet rs=st.executeQuery(); 
if(rs...)
{  
  Array ry=rs.getArray(6); 
}
  

String  id=request.getParameter("id");   
if(!id.Equals(""))
{
  String  context=sqlQuery(id);
  ..... 
}  


#2


首先你出现的unreachable statement是因为你程序中出现了更本执行不到的语句,例如:
public String test(){
     return "hello";
     String s="world";
}

上面的代码片段就会出现unreachable statement,因为在return "hello"之后的语句String s="world"是永远也执行不到的。

另外,你在jsp中定义的方法sqlQuery没有返回值语句,所以会出现missing return statement这样的提示

#3


问题发现了,纯属低级错误.关键也没有用开发工具.谢谢各位了.

#4


呵呵

#5


呵呵,肯定是2楼说的问题啦,不过来晚了..

#6



   String       content=(String)ry.getArray();   
   return       content;   // 这里已经return 啦
   conn.close();       // 这里就不可能被执行了
 }catch(SQLException       ex)       {    

#7


改成这样
  public String sqlQuery(String num) {
    Connection conn = null;
    String connStr;
    try {
      connStr = "jdbc:microsoft:sqlserver://10.1.72.15:1433;DatabaseName=test";// "jdbc:oracle:thin:@local:1521:orcl";
      DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
      conn = DriverManager.getConnection(connStr, "sa", "");

      PreparedStatement st = conn.prepareStatement("select       *       from       NEIKON_NEWS       where       id=?");
      st.setString(1, num);
      ResultSet rs = st.executeQuery();
      Array ry = rs.getArray(6);
      String content = (String) ry.getArray();
      return content;
    } catch (SQLException ex) {
      System.out.println("Error       in       Connecting       to       the       Database       " + '\n' + ex.toString());
    } finally {
      if (conn != null) {
        try {
          conn.close();
        } catch (Exception ex) {}
      }
    }
  }

#8


我作为一个初学着,刚开始就不用开发工具,实在有点托大.犯下这种低级错误,实在是汗颜.

#9


开始不用集成开发工具是对的。也是受到鼓励的做法。

你要加深Java基础的学习,同时加强通过错误提示排错的能力。

我看好你哦,呵呵

#10


问题已经解决了,就结贴吧,呵呵

#11


斑主,我有点不同意开发不用工具的做法。 特别是对于新手。

固然,从最基本的开始学习,会加深印象,让他们打好基础。
但同时也会极大的打击他们的士气。

举个不太恰当的例子,我们会用JAVA语言就可以了,没必要一开始就只讲解字节码怎么回事。

他们需要先死记硬背,是这样,没什么理由,随着学习的过程,逐步地理解为什么是这样,和不是这样怎么办。

使用工具能极大的提高他们的信心。

#12


呵呵

#13


嗨,对头呀,对于以上的说法,可以说已经完美啦!

#1



st.setString(1,       num);   
ResultSet rs=st.executeQuery(); 
if(rs...)
{  
  Array ry=rs.getArray(6); 
}
  

String  id=request.getParameter("id");   
if(!id.Equals(""))
{
  String  context=sqlQuery(id);
  ..... 
}  


#2


首先你出现的unreachable statement是因为你程序中出现了更本执行不到的语句,例如:
public String test(){
     return "hello";
     String s="world";
}

上面的代码片段就会出现unreachable statement,因为在return "hello"之后的语句String s="world"是永远也执行不到的。

另外,你在jsp中定义的方法sqlQuery没有返回值语句,所以会出现missing return statement这样的提示

#3


问题发现了,纯属低级错误.关键也没有用开发工具.谢谢各位了.

#4


呵呵

#5


呵呵,肯定是2楼说的问题啦,不过来晚了..

#6



   String       content=(String)ry.getArray();   
   return       content;   // 这里已经return 啦
   conn.close();       // 这里就不可能被执行了
 }catch(SQLException       ex)       {    

#7


改成这样
  public String sqlQuery(String num) {
    Connection conn = null;
    String connStr;
    try {
      connStr = "jdbc:microsoft:sqlserver://10.1.72.15:1433;DatabaseName=test";// "jdbc:oracle:thin:@local:1521:orcl";
      DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
      conn = DriverManager.getConnection(connStr, "sa", "");

      PreparedStatement st = conn.prepareStatement("select       *       from       NEIKON_NEWS       where       id=?");
      st.setString(1, num);
      ResultSet rs = st.executeQuery();
      Array ry = rs.getArray(6);
      String content = (String) ry.getArray();
      return content;
    } catch (SQLException ex) {
      System.out.println("Error       in       Connecting       to       the       Database       " + '\n' + ex.toString());
    } finally {
      if (conn != null) {
        try {
          conn.close();
        } catch (Exception ex) {}
      }
    }
  }

#8


我作为一个初学着,刚开始就不用开发工具,实在有点托大.犯下这种低级错误,实在是汗颜.

#9


开始不用集成开发工具是对的。也是受到鼓励的做法。

你要加深Java基础的学习,同时加强通过错误提示排错的能力。

我看好你哦,呵呵

#10


问题已经解决了,就结贴吧,呵呵

#11


斑主,我有点不同意开发不用工具的做法。 特别是对于新手。

固然,从最基本的开始学习,会加深印象,让他们打好基础。
但同时也会极大的打击他们的士气。

举个不太恰当的例子,我们会用JAVA语言就可以了,没必要一开始就只讲解字节码怎么回事。

他们需要先死记硬背,是这样,没什么理由,随着学习的过程,逐步地理解为什么是这样,和不是这样怎么办。

使用工具能极大的提高他们的信心。

#12


呵呵

#13


嗨,对头呀,对于以上的说法,可以说已经完美啦!