java 有个一删除方法··因为被删除对象被外键引用··不能删除···所以加try catch 提示被引用不能删除
一直不进Catch块···publicintdeleteSellManner()throwsException{inti=0;try{intid=Integer.pars...
一直不进Catch块···
public int deleteSellManner()throws Exception{
int i=0;
try {
int id = Integer.parseInt(getRequest().getParameter("id"));
SellManner add = sellMannerDao.findById(id);
sellMannerDao.delete(add);
} catch (Exception e) {
i=1;
return i;
}
return i;
}
返回一直是0 单步走完try 就到最后return了
在线等真心求助··新手··谢谢 展开
public int deleteSellManner()throws Exception{
int i=0;
try {
int id = Integer.parseInt(getRequest().getParameter("id"));
SellManner add = sellMannerDao.findById(id);
sellMannerDao.delete(add);
} catch (Exception e) {
i=1;
return i;
}
return i;
}
返回一直是0 单步走完try 就到最后return了
在线等真心求助··新手··谢谢 展开
5个回答
展开全部
调试最主要看数据
① 你的方法里面直接就是 try catch ,所以 public int deleteSellManner() 后面的 throws Exception 是多余的,可以不要
② 既然不进入 catch 就是执行 delete 没有 throw 或者捕获到错误,
2-1、看一下你的 add 是什么内容,然后对应同样的属性值和 sellMannerDao.delete(add)
中的 sql 语句到数据库 delete 一下,记得要确定数据,删错了就麻烦了
2-2、如果数据库 delete 报外键关联错误,那就是你的 sellMannerDao.detele(add) 方法有问题了
,基本是捕获了异常而没有抛出异常引起的,例如
public void delete(SellManner add){
try{
// 这里执行方法,然后捕获到异常了
**.delete(**);
}catch(Exception e){
// 这里要把异常 throw 出来,才可以把外面调用的一层处理,要么就这个方法里面不要
// 加 try catch 了
throw e;
}
}
① 你的方法里面直接就是 try catch ,所以 public int deleteSellManner() 后面的 throws Exception 是多余的,可以不要
② 既然不进入 catch 就是执行 delete 没有 throw 或者捕获到错误,
2-1、看一下你的 add 是什么内容,然后对应同样的属性值和 sellMannerDao.delete(add)
中的 sql 语句到数据库 delete 一下,记得要确定数据,删错了就麻烦了
2-2、如果数据库 delete 报外键关联错误,那就是你的 sellMannerDao.detele(add) 方法有问题了
,基本是捕获了异常而没有抛出异常引起的,例如
public void delete(SellManner add){
try{
// 这里执行方法,然后捕获到异常了
**.delete(**);
}catch(Exception e){
// 这里要把异常 throw 出来,才可以把外面调用的一层处理,要么就这个方法里面不要
// 加 try catch 了
throw e;
}
}
展开全部
被外键引用的话需要先删除外键那条记录,再删除本条记录。 否则你永远也删不了。
或者你把数据库表的外键约束删除了,估计你们经理不会让你这么做的~~
不进catch 是因为你上面的代码没有异常抛出吧。。。 看看异常是否被你的DAO类吞了。
或者你把数据库表的外键约束删除了,估计你们经理不会让你这么做的~~
不进catch 是因为你上面的代码没有异常抛出吧。。。 看看异常是否被你的DAO类吞了。
追问
您的意思是DAO类有可能吧一场给吞了··那我在DAO里面做 try catch 行吗 ? 而且我是新手不知道怎么看异常堆栈 就是想现在有外键约束的时候 不删除··弹出一个窗口提示一下不能删 然后返回列表页面就行了
追答
看异常堆栈只要在catch里面打 e.printStackTrace(); 就可以在控制台看到异常的堆栈信息。(如果有异常的话)
首先看看dao里面有没有捕获异常,如果有捕获try/catch的话就在catch里写throw new Exception(e);把异常抛出。如果没有的话,就是你的dao没有捕获异常,如果发生异常的话就会直接抛出异常给上一层调用者,你就不用处理了。
关于你的程序,你说走完try了 就证明你的程序没有抛出异常。。。 所以就没有到catch里。
一个可能是你的dao把异常吞了。
还有一个可能是你的程序正常走完了,没有异常。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从try catch的原理上讲 应该就是 虽然不能删除 但是try 块里面并没有抛出异常 所以才不会到catch块中
你这个delete方法中 可以试试 抛出一个异常
你这个delete方法中 可以试试 抛出一个异常
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把return换成throw 试试呢,看看异常堆栈
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sellMannerDao.delete(add); 你看看这个有抛出异常么??要是没抛出异常你catch个屁屁啊!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询