框架用s2sh
在services层调用dao的方法
try {
roleDao.saveRole(role);
} catch (Exception e) {
e.printStackTrace();
return false;
}return true;这个dao的方法可能会抛出异常,也可能不抛出用正常值测试的时候,在action中可以接收到这个services返回的true
但是当用故意用错误的值测试,在anction中接受不到任何事情,
这个false没有被传递到anction中跟踪代码发现在return false的时候到了NativeMethodAccessorImpl中
这是怎么回事???

解决方案 »

  1.   

    首先lz在service抛出了异常,并且返回的为false所以程序不会想后面执行了,所以在action中当调用完service方法后,程序就终止了。lz我有个建议,我们在dao需要做的是抛出一个自定义的异常,并捕获自己的异常,然后在service
    吧异常抛到action,在action中进行处理。
      

  2.   


    你是说自定义一个异常,从dao抛到service,再从service抛到action?为什么要自定义一个异常呢?
    这里的异常一般是数据库异常,所以这里的自定义的异常也是包装系统提供的异常吧?
    为什么不直接抛Exception呢?
      

  3.   

    在程序中通过自定义的异常能够很好的了解我们的异常信息,而且我们还可以通过得到异常错误码 ,在页面上跟明了的显示错误信息 。通常程序中的异常可分为:系统异常和自定义异常。自定义异常时通过继承exception或运行时异常。如果直接抛出exception我们不能很好的区分异常的类型。而且我们的用户更加不明白自己操作出项了什么异常。
    举个简单的例子,例如我们通过自定义异常,当用户姓名不存在时,我们可以提示用户名不存在,当密码输入错误时我们可以提示用户密码数据错误,这样能够更加清晰知道我们的错误信息。