Назад к вопросам
JuniorТеорияЧасто
Что произойдёт при запуске программы?
<?php
function safeDiv(int $a, int $b): string
{
try {
return (string) intdiv($a, $b);
} catch (Exception $e) {
return 'caught';
}
}
echo safeDiv(6, 3), ' ', safeDiv(1, 0), "\n";2, затем непойманный DivisionByZeroError: catch (Exception) не ловит Error
- Ждать, что
catch (Exception $e)поймаетDivisionByZeroError: он наследуетError, другую ветвьThrowable, поэтому его ловятcatch (Error $e)иcatch (Throwable $e). - Ждать, что деление на ноль выдаст предупреждение и программа пойдёт дальше: с PHP 8 и
/, иintdivпри делителе0бросаютDivisionByZeroError.
- Какой
catchостановит эту ошибку и где в программе ему место? - Что вернула бы
safeDiv(1, 0), если бы функция использовалаfdivвместоintdiv?