rt

解决方案 »

  1.   

    大部分在bussiness里面处理你可以在dataaccess处理好以后,抛出去到bussiness里面单独搞一个异常类来处理异常问题 ,然后返回给web层 
      

  2.   

    如果方法exists判断一个值是否存在,如果有异常那么返回true还是false还是throw
      

  3.   


    是的。偶然这样写,都已经会为将来debug留下足以称之为定时炸弹的影响。如果一个 pm 把这个当作一个“行之有效”的做法而推广到很多代码中都埋炸弹,问题就太大了。这样做,还不如尽早引爆所有炸弹(尽早主动去测试,或者至少要求不去隐匿未知bug),然后尽早地在开发时在代码中在相应才做前预先用if语句去明确地检测并分支程序流程。bussiness层处理?如果用户需要得到“张三是否是孙红雷的老婆”的结论,结果bussiness发现“张三”是一个猪而不是人,它是返回true还是返回false呢?当然都不对,而是抛出Exception了。你的异常处理机制应该放在应用程序的边界最外层,如果这里不处理那么整个应用程序就没有地方可能再处理异常了。
      

  4.   


    throw。正如你举出的例子,如果返回true或者false,说明遇到的分支判断条件是在文档、合同中已经明确过了的,说明没有异常。而隐藏异常就是以自己的想法来代替客户的想法,不一定是合适的。
      

  5.   

    极个别的情况下隐藏异常。例如系统每隔10分钟要到临时文件目录下去删除那些最近2个小时没有访问过的文件,这个程序中就可以对文件的delete操作使用try...catch...进行忽略或者仅仅在后台通知系统后台维护人员。这种程序,这个流程是对具体的异常明确定义过了的,在合同、文档中都能找到意义明确的写成文字根据,而不是故意隐藏程序员自己未知类型的异常。