interface IUserDao { insertUser(User); }
class UserDAOImpl { insertUser(User) { 使用JDBC操作数据库 可能会抛出SQLException,编译异常,必须处理 两种方法 1:这里catch并且不往外报错; 这样不能像外层报告错误,可能外层要在成功插入后进行一些操作 2:insertUser 后加 throws SQLException 这样就会强制接口函数中也抛出SQLExceptoin,如果以后用其他DAO实现方式 } }
|
为了不必让接口抛出异常,同时报异常通知上层
可以自己新建一个派生自RuntimeException的类
这样的异常可以不catch
class DaoException extends RuntimeException { public DaoException(String msg) { super(msg); } }
class UserDAOImpl { insertUser(User) { try { 操作数据库 } catch(SQLException e) { throw new DaoException(e.getMessage()); } } }
|
使用IUserDAO的地方如果自己能处理就catch,不能处理抛出去就行
不管里面有没有catch DaoException,都不用加throws
// 自己能处理catch
regist() { try { IUserDAO.insertUser(user); } catch { } }
// 不能处理,不管;抛给上层处理,但不必throws
regist() // 不用抛但是外层可能接收到DaoException异常
{ IUserDAO.insertUser(user); }
|
阅读(1642) | 评论(0) | 转发(0) |