Кажется, они делают одно и то же.
$c->reply->exception('foo'); return;
против
die "foo\n";
Должен ли я выбрать одно из другого?
Последний легче читается, при необходимости может быть перехвачен на соответствующем уровне и может включать трассировки стека и контекст в режиме разработки с помощью автоматического c Mojo :: Exception обертывания. Он также будет действовать соответствующим образом в обработчике обещаний или в асинхронном подпрограмме c, в результате чего обещание будет отклонено.
Здесь вы можете точно увидеть, как оно обрабатывается ($next->() - это вызов в цепочке отправки): https://metacpan.org/source/SRI/Mojolicious-8.33/lib/Mojolicious.pm#L208 -214
$next->()