抛异常问题

pilqc2009 2012-07-19 05:13:25
Unreachable catch block for SQLException. This exception is never thrown from the try statement body
try {
emp = empdao.findEmployeeByUserName(userName);
} catch (DataException e) {
logger.error("检查用户名出错", e);
throw new DataException(e);
} catch (SQLException e){
logger.error("数据库出错", e);
throw new DataException(e);
}

请问怎么解决??
...全文
398 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pilqc2009 2012-07-20
  • 打赏
  • 举报
回复
很感谢解答。。明白了。。。
[Quote=引用 10 楼 的回复:]
} catch (SQLException e) {
logger.error("查询员工信息失败");
throw new DataException(e);
}
你已经把SQLExcpetion异常转化成DataException异常抛出了
所以在调用findEmployeeByUserName的时候是不会抛出SQLException异常了
而你在catch里又去捕获SQLExce……
[/Quote]
lip009 2012-07-20
  • 打赏
  • 举报
回复
} catch (SQLException e) {
logger.error("查询员工信息失败");
throw new DataException(e);
}

你已经把SQLExcpetion异常转化成DataException异常抛出了
所以在调用findEmployeeByUserName的时候是不会抛出SQLException异常了
而你在catch里又去捕获SQLException异常,所以就有问题了
HolyCode_ 2012-07-20
  • 打赏
  • 举报
回复
lz是用什么开发工具,一般工具都不需要自己写异常类的吧
龙四 2012-07-19
  • 打赏
  • 举报
回复
你的throws后面没有SQLException嘛
pilqc2009 2012-07-19
  • 打赏
  • 举报
回复
是不是我在这个函数里面抛过异常了,在emp = empdao.findEmployeeByUserName(userName);
这个地方就不用抛异常了》》》》
public Employee findEmployeeByUserName(String uName) throws DataException{
PreparedStatement psmt = null;
ResultSet rs = null;
Employee emp = null;
Connection conn = DBConn.getConnection();
String sql = "select * from employee where UserName = ?";
try {
psmt = conn.prepareStatement(sql);
psmt.setString(1, uName);
rs = psmt.executeQuery();
while(rs.next()){
emp = new Employee();
emp.setEmployeeNo(rs.getString("EmployeeNo"));
emp.setUserName(rs.getString("UserName"));
emp.setPassword(rs.getString("Password"));
emp.setRoleID(rs.getString("RoleID"));
emp.setName(rs.getString("Name"));
emp.setIDNumber(rs.getString("IDNumber"));
emp.setBirthday(rs.getString("Birthday"));
emp.setGender(rs.getString("Gender"));
emp.setStatus(rs.getString("Status"));
emp.setDepartmentID(rs.getString("DepartmentID"));
emp.setEmployForm(rs.getString("EmployForm"));
emp.setEmployTo(rs.getString("EmployTo"));
}
} catch (SQLException e) {
logger.error("查询员工信息失败");
throw new DataException(e);
}finally{
try {
if(rs!=null){
rs.close();
}
if(psmt!=null){
psmt.close();
}
} catch (SQLException e) {
logger.error("关闭资源出错!"+e);
throw new DataException(e);
}
}
return emp;
}
jackson_fighting 2012-07-19
  • 打赏
  • 举报
回复
catch 捕获的异常是 try{} 里面可能出现的异常, try{} 里面 不可能抛出catch的异常,会出现楼主的出现的问题。
pilqc2009 2012-07-19
  • 打赏
  • 举报
回复

怎么算是匹配呢??

[Quote=引用 2 楼 的回复:]
可能是你所定义的异常和所抛出的异常不匹配!!
[/Quote]
pilqc2009 2012-07-19
  • 打赏
  • 举报
回复
能不能具体点。定义的异常和抛出的异常还要匹配???
[Quote=引用 2 楼 的回复:]
可能是你所定义的异常和所抛出的异常不匹配!!
[/Quote]
pilqc2009 2012-07-19
  • 打赏
  • 举报
回复

怎么会呢?
empdao.findEmployeeByUserName(userName)得到的解决是通过数据库查询得到的,怎么会与SQLException无关呢?



[Quote=引用 1 楼 的回复:]
你的findEmployeeByUserName并不会抛出与SQLException相关的异常,所以你的catch (SQLException e)部分是多余的
[/Quote]
ccy953384950 2012-07-19
  • 打赏
  • 举报
回复
可能是你所定义的异常和所抛出的异常不匹配!!
龙四 2012-07-19
  • 打赏
  • 举报
回复
你的findEmployeeByUserName并不会抛出与SQLException相关的异常,所以你的catch (SQLException e)部分是多余的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧