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

来源:9-16 利用TP6的搜索器withSearch检索商品信息

qq_慕工程4267781

2020-03-17

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

写回答

1回答

singwa

2020-03-17

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

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

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


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

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

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

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


1
1
qq_大胖子II小胖子_0
是不是不想暴露信息的时候就需要抛出异常保护数据信息?
2020-07-03
共1条回复

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1463 学习 · 1332 问题

查看课程