催化剂:在控制器或模型中死亡

时间:2014-04-16 02:22:29

标签: apache perl catalyst mod-perl

假设我有一个Controller,然后是Model,它随后会在libs中调用很多pm来从远程控制器中获取一些数据。

我的理解是: 在Apache子进程中,

如果在任何pm中有任何'死',我需要在上呼叫方抓住它来处理它。如果没有捕获。 'die'异常将直接进入mod_perl,然后这个Apache子进程将被终止。

然后,Apache将分叉一个新的子进程来替换垂死的进程。

我的理解是否正确?

1 个答案:

答案 0 :(得分:1)

我选择了以下声明:

  

如果没有捕获。 'die'异常将直接进入mod_perl,然后这个Apache子进程将被终止。

这有点不同。首先,你的'死'将被抓住。如果您在调度链中,即使您没有自己捕获异常,链也会继续。请参阅https://metacpan.org/pod/Catalyst#CONFIGURATION

中的 abort_chain_on_error_fix

此外,您可能对可能发现错误的中间件感兴趣:https://metacpan.org/pod/Catalyst#PSGI-MIDDLEWARE