首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 抛出异常错误,大家帮忙看看哪里有问题? [已结贴,结贴人:wang6248li]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 21:15:09 楼主
    还有一个错误没有解决,数据库的连接DBConn没有问题,可以编译生成class文件,就是下边的操作文件DBResult.java总是编译错,找不到错在哪里??
    -------------------------------------------
    错误信息:
    javac DBResult.java

    DBResult.java:12: unreported exception java.lang.Exception; must be caught or de
    clared to be thrown
        this.con=DBConn.getConnection();
                                    ^
    1 error
    ---------------------------------------------
    //数据库连接的DBConn.java
    package com.mingri.dbconn;

    import java.sql.*;
    import javax.naming.*;
    import javax.sql.DataSource;

    public class DBConn
    {
      public static synchronized Connection getConnection() throws Exception{
        try{
          Context initCtx=new javax.naming.InitialContext();
          //从Context中lookup数据源
          Context envCtx=(Context)initCtx.lookup("java:comp/env");
          DataSource ds=(DataSource)envCtx.lookup("jdbc/mingri");
          return ds.getConnection();
        }
        catch(SQLException e){
          throw e;
        }
        catch(NamingException e){
          throw e;
        }
      }
    }
    --------------------------------------------------
    //数据库操作DBResult.java

    package com.mingri.dbconn;

    import java.sql.*;

    import javax.naming.*;

    public class DBResult
    {
      private Connection con;
      public  DBResult(){
        try{
       
        this.con=DBConn.getConnection();
       
        }
        catch(SQLException ex){}
        catch(NamingException ex){ }
      }
      /**
      * 用于获得执行SQL语句的ResultSet对象
      */
      public ResultSet getResult(String sql){
        try{
          Statement stmt=con.createStatement();
          ResultSet rs=stmt.executeQuery(sql);
          return rs;
        }
        catch(Exception e){}
        return null;
      }
      /**
      * 用于执行SQL语句没有返回值
      */
      public void doExecute(String sql){
        try{
          Statement stmt=con.createStatement();
          stmt.executeQuery(sql);
        }catch(Exception e){}
      }
      /**
      * 用于获得执行SQL语句的PreparedStatement(预处理)对象
      */
      public PreparedStatement getPreparedStatement(String sql){
        try{
          PreparedStatement pstmt=con.prepareStatement(sql);
          return pstmt;
        }
        catch(Exception e){}
        return null;
      }
      /**
      * 关闭连接
      */
      public void closeCon(){
        try{
          this.con.close();
        }catch(Exception e){
            e.printStackTrace();
        }
      }
    }
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 21:19:311楼 得分:7
    DBResult.java:12: unreported exception java.lang.Exception; must be caught or de
    clared to be thrown

    错误提示很清楚呀。

    public class DBResult throws Exception{

    must be caught or declared to be thrown
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 21:33:022楼 得分:7
    Java code
    public DBResult() { try { this.con = DBConn.getConnection(); } catch (SQLException ex) { } catch (NamingException ex) { } catch (Exception e) { } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 21:40:143楼 得分:0
    谢谢二位,弱弱的问一句为什么这两种修改都可以编译成功!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 21:44:104楼 得分:9
    你没有 捕获异常 。或者把没有能力处理的异常抛出。
    所以两种做法都是正确的。
    1,种是把异常交给别人去处理。
    2,种 自己处理。

    反正就是要处理 ,就不会报错。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 21:44:575楼 得分:7
    Java code
    this.con=DBConn.getConnection();


    很明显,DBConn.getConnection()方法所抛出的异常是Exception。而捕获这个方法的catch块中并没有捕获Exception异常。所以无法进行编译。

    楼上的解决方法可行。但从设计角度上来说,数据访问层的异常应当继续上抛。并使用自定义异常类或手动编写异常信息的方式上抛。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 00:42:176楼 得分:0
    谢谢大家,每人有分!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved