jfinal用enhance激活service后,不能抛自定义异常或捕获不了

我的控制器代码

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)

有谁知道什么原因?如何解决?

评论区

JFinal

2018-10-01 22:29

因为 delete 方法实际没抛出 TErrorException ,而是抛出了别的类型异常

JFinal

2018-10-01 22:30

单步调试看异常类型,一目了然

老兵

2018-10-04 10:11

单步调试过了的,代码执行了throw new TErrorException(308);,但外面捕获的却不是自定义异常

热门反馈

扫码入社