Laravel5.1 怎么在任意方法内抛出异常并阻断,返回上一个页面

我的Laravel版本是5.1LTS,php版本是7.0.22,nginx 1.12
我写的是web服务,一个视图文件,发送一个post方法到指定的方法A,A里面对请求进行分类,用switch分别请求,方法B,C,D,switch到B里面之后,还要进行switch分类调用E,F,G,我想要的效果是,在以上任意的方法里面都可以直接返回错误信息,并返回到最开始的那个提交post请求的视图页面,或者说是之前的最近的一个视图页面去 。
我已经试过了如下方法:

1、return back()->withErrors(['错误一']);
2、return redirect('/admin/resource/showAddResourceView/' . $customer_id)->withErrors(['错误二']);

以上的两个方法只能在第一层级A里面使用。
我现在是在A之后的方法里面进行return 错误码,然后再A里面对返回的错误码进行分类back()->withErrors()返回错误信息渲染到视图文件,但是随着业务的深入,发现这个方法把代码结构搞得很乱,逻辑不清楚,且非常不利于解耦。
请问有没有好的方法解决我的这个问题?

我发现dd() , abort(),有这种功能,能在任意地方阻断。但是我要的效果是把错误信息放到ErrorBag里面去,然后在视图页面渲染出来。

ShuiPingYang
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 7

A里面对请求进行分类,用switch分别请求,方法B,C,D,switch到B里面之后,还要进行switch分类调用E,F,G,你这种逻辑就很复杂了呀。。不能清理逻辑?

不如考虑下抛异常吧,在最上层捕获异常并输出错误

6年前 评论

@freefcw 只能在最上层吗?我想在任意地方捕捉错误信息,这个逻辑已经理过了,确实很多层,需求很变态。

6年前 评论

@欧阳逸 可以考虑自定义一个异常,在捕捉到错误信息的时候再次抛出一个自定义的异常,然后在上层统一处理

6年前 评论
Kurisu

可以考虑直接使用try {} catch(\Exception $exception){}在外部捕获异常,在switch里面throw new Excepiton ( " error code " ) 抛出异常,

6年前 评论
Summer

@欧阳逸 该用户已被禁言,大家下次遇到此类回答,不论他多有理,都 @ 我处理。

6年前 评论

@Summer 好的,不知道哪里惹她了。老大,顺便请教一下这个问题,有没有好的解决方案啊。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!