import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
public class Data
{
public static Connection getConn() throws SQLException,NamingException
  {
   try
     {

    Context initCtx=new javax.naming.InitialContext();
    Context envCtx=(Context)initCtx.lookup("java:comp/env");
    DataSource ds=(DataSource)envCtx.lookup("jdbc/bn");
    return ds.getConnection();
      }
catch(SQLException e){}
         catch(NamingException e){}
}
}

解决方案 »

  1.   

    import java.sql.*;
    import javax.naming.*;
    import javax.sql.DataSource;
    public class Data
    {
    public static Connection getConn() throws SQLException,NamingException{
        Context initCtx=new javax.naming.InitialContext();
        Context envCtx=(Context)initCtx.lookup("java:comp/env");
        DataSource ds=(DataSource)envCtx.lookup("jdbc/bn");
        return ds.getConnection();   
    }
    }
      

  2.   

    楼上的虽然可以通过编译,但是如果真的有异常,那就不能捕获了,更何况在函数后面生命了这2个异常,然后后面就不管了?我觉得这是逃避问题。没有指出原来程序真正的症结
    原来的程序编译时提示:missing return statement
    行数在倒数第二个大括号处
      

  3.   

    import java.sql.*;
    import javax.naming.*;
    import javax.sql.DataSource;
    public class Data
    {
    public static Connection getConn()
      {
       try
         {

        Context initCtx=new javax.naming.InitialContext();
        Context envCtx=(Context)initCtx.lookup("java:comp/env");
        DataSource ds=(DataSource)envCtx.lookup("jdbc/bn");
        return ds.getConnection();
          }
    catch(SQLException e){return null;}
             catch(NamingException e){return null;}
    }
    }
      

  4.   

    它应该还会抛出java.lang.NullPointerException 
    再加一个捕捉异常的语句到后面:
    catch(NullPointerException npe)
    {
    return null;
    }