我的控制器代码
try
{
//通过调用enhance触发事务控制处理
service = this.enhance(TmyService.class);
service.delete(getPara(1));
//成功后依然跳转到原页面
redirect("xxxxx" + getPara(0));
}
catch(TErrorException ex)
{
this.setAttr("error", ex.getErrorEnum());
renderJsp("xxxxx");
}
catch(Exception ex)
{
this.setAttr("error", 1234);
renderJsp("xxxx");
}
业务层代码:
public void delete(String ids) throws TErrorException
{
String[] tempArr = ids.split(",");
//执行删除操作
int iUsedNum = 0;
for(int i=0;i<tempArr.length;i++)
{
int tempId = Integer.parseInt(tempArr[i]);
if(iType == 0 && iDtype == 0)
{
//主模板,判断是否被站点引用
sql = Db.getSql("ssss.findIsUsedssss");
List<Record> records = Db.find(sql, tempId);
if(records.size() > 0)
{
iUsedNum++;
continue;
}
//执行删除操作
delete_xxxx_trans(tempId, iType, iDtype);
}
else if(iType == 0 && iDtype != 0)
{
//栏目页独立子模板,判断是否被栏目引用
sql = Db.getSql("xxxx.findIsColumnUsedssss");
List<Record> records = Db.find(sql, tempId);
if(records.size() > 0)
{
iUsedNum++;
continue;
}
}
}
//根据实际删除情况返回失败或成功提示信息
if(iUsedNum > 0)
{
if(iUsedNum < tempArr.length)
{
throw new TErrorException(308);
}
else
{
throw new TErrorException(307);
}
}
}
实际当在delete中抛出自定义异常时,总是跑到外面 controller中的catch(Exception ex),而不是catch(TErrorException ex)
有谁知道什么原因?如何解决?