Cucabit прав, отрыв - это путь. Что касается того, почему, обычно в perl-процессе, «die» останавливает процесс. В Catalyst вы этого не хотите. Например, если вы запускаете приложение Catalyst под FastCGI, вы создаете один или несколько автономных процессов, которые обрабатывают несколько запросов. Если первый запрос уничтожит сам процесс, веб-сервер должен будет повторно запустить процесс FastCGI, чтобы иметь возможность обрабатывать следующий вызов. Я думаю, что для этого Catalyst ловит «die» (он часто используется как «do_something () или die $!» По умолчанию) и превращает его в исключение.
Полагаю, вы могли бы также завершить процесс с помощью команды «exit», но у вас возникли те же проблемы, что и выше, убив процесс.
Конечно, вы можете создать свой собственный метод die, который регистрирует ошибку, переданную с помощью объекта журнала по умолчанию, а затем вызывает detach или что-то в этом роде. также должна быть возможность переопределить обработку исключений Catalyst, так как все возможно с Catalyst:)