我试图建立一个特定的错误" stack"对于我的应用程序我有一个小模块系统,我希望能够将错误处理程序从模块添加到当前错误堆栈。但是,我想在模块错误处理程序之前检查一些错误处理程序,但是在模块错误处理程序之前需要注册,以防模块的引导过程出错。
我想要的堆栈如下:
当应用程序启动时,记录,警报和默认回退会立即放在堆栈上。我希望能够在下一步中存储应用程序错误处理程序,然后在确定并加载模块后再存储模块错误处理程序。据我所知,错误处理程序只能放在堆栈的顶部或底部;没有插在中间。
有没有办法插入错误处理程序?如果没有,有没有办法注册一个不同的错误处理类(一个从内置的扩展)?
答案 0 :(得分:0)
为了节省时间,我设法提出了一个有效的解决方案。这不是我真正想要的,但我会分享它,以防其他人需要做这样的事情。
我的方法是扩展 Illuminate \ Foundation \ Application 并覆盖 registerExceptionProvider()方法来注册我自己的 ExceptionServiceProvider 。此提供程序从 Illuminate \ Exception \ ExceptionServiceProvider 扩展,并覆盖 registerHandler()方法。在那里,我注册我的处理程序的方式与原始提供程序注册默认处理程序的方式相同。
我将默认应用程序提供的每种错误方法的插入* 版本和 insertError 方法添加到处理程序,它实际插入到错误处理程序堆栈中。最后,我更改了start.php文件以创建我的应用程序,而不是默认的。
正如我所提到的,我并不喜欢这种方法;我认为应该做的事情更加繁重。看起来Laravel应该有更好的方法来扩展实际的错误处理程序,或者至少是一个接口来命令更精确地注册错误处理程序。