不使用try catch而使用全局异常处理的问题

来源:6-16 登录优化- 控制器业务代码抽离到business层(最新)

slybootslion

2020-03-25

如果在Login控制器中不使用try catch的方法捕获异常,而是使用第四章中所讲的全局异常处理(在模块下新建exception文件夹,定义异常处理类,然后用provider.php文件引入的方式),会出现一些问题,比如:在登录之后,重新回到login页面,页面会抛出异常:
图片描述

我检查了一下,是因为在Login控制器中,通过调用父类 AdminBase 中的 redirect方法跳转,而这个父类中的redirect方法是使用一个抛出异常的方式来跳转页面的:
图片描述
这个抛出的异常最终被全局异常处理捕获,所以造成我上面说到的问题。

按照我的习惯,我是不愿意用try catch,因为这种方式有可能忘了漏写,而且以后写的多了,可能到处都是try catch让代码不易阅读,一般我都会用全局异常处理的方式。

如果我不使用try catch,就没有办法使用继承AdminBase类来判断是否登录的方式,因为这个基类跳转页面都是这种抛出异常的方式处理。

所以我注释了Login控制器中的判断,使用中间件的方式来做是否登录的判断:
图片描述
我发现中间件中判断的方式非常繁琐,因为现在项目比较简单,只需要判断登录、没有登录这两种情况,如果项目很复杂,在前置中间件中所作的判断就非常多。

问题就是:
如果使用全局异常处理的方式,有什么更好的方法来处理这种中间件对登录情况的判断(更好的判断方式,或者更好的写法)?

写回答

1回答

slybootslion

提问者

2020-03-26

7-17章看到解决方法了。

0
1
singwa
嗯是的后面有讲
2020-03-29
共1条回复

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

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

1465 学习 · 1332 问题

查看课程