请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于在哪一层捕获异常的问题

我看老师在控制器、业务层、模型层都有过捕获异常的时候,这方面有什么原则和技巧么?

正在回答 回答被采纳积分+3

1回答

singwa 2020-03-17 19:54:23

亲爱的同学您好。 您这个问题问的非常好。

比如您在业务逻辑层调用了多个 model层的一个方法, 但是每个 model可能会抛出异常, 当然如果这个时候您在控制层去try catch 是没问题的,  但是有这么一种场景,比如model层的异常可能会暴露数据库里面的字段, 这个时候 我想在我不想暴露这些数据怎么办?

第一种方式 您可能想到的是 在控制器层try catch的时候 给出 message:   "内部异常"等 , 当然这种一般情况下是可以的,能满足。 但是有时候这种场景不能满足我们的要求,我们可能需要在 业务逻辑层调用不同的model方法的时候 有异常的时候 需要给出不同的错误提示, 不同的状态码, 那这个时候您如何弄 ?,那就需要用到 下面的第二种方式


第二种方式: 在业务逻辑层 每次调用不同model方法的时候 加一个try catch 如果有异常 ,这个时候我再抛出自定义的异常。 这个时候可以给出 状态码, 自定义的错误提示 等。

然后控制器层继续 try catch   这个时候获取他得状态码 + message即可。

当然这个只是一种场景哈, 具体场景其实很多, 您可以细细品味, 有理解的也可以和老师反馈,老师帮你看看是否合理

最后祝您学习愉快, 有问题欢迎随时沟通。


1 回复 有任何疑惑可以回复我~
  • 是不是不想暴露信息的时候就需要抛出异常保护数据信息?
    回复 有任何疑惑可以回复我~ 2020-07-03 09:06:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信