我在仍然处于测试阶段的Phoenix LiveView库中玩得很开心。我感到困惑的一件事是如何确保我的 LiveView 在发生异常时以可预测和透明的方式运行。
在传统的基于 HTTP 请求的世界中,我希望该特定请求会崩溃,返回 500 响应以及可能向用户指示“嘿,服务器出现问题”的错误页面。开发人员可以依靠集成,例如Rollbax检测和报告异常,因此我会收到一封有关错误的电子邮件,并且可以在 Rollbar 仪表板中检查它。
但是当我的 LiveView 代码崩溃时,我无法得到这种保证。LiveView 进程将从崩溃中恢复并(据我了解)恢复到其最后一个已知的健康状态,这真的很酷,但也会让用户感到沮丧(例如,“每次我提交表单时,它都会向我显示一个加载图标恢复为空白表格”)。而且我不清楚如何在 LiveView 中检测或捕获异常,以便将它们报告给像 Rollbar 这样的错误监控服务。(缺少不切实际的解决方案,例如向rescue
每个处理程序添加一个)
如何检测 LiveView 中发生的异常,以便 a) 以某种方式提醒最终用户该问题,以及 b) 确保将异常报告给开发人员?