@mafia8

Как поймать исключение в php?

<?
$a='a';
try {
  $a[1250000000]='b';
  // Это поймать надо 
  // PHP Fatal error:  Out of memory (allocated 524288) 
  // (tried to allocate 1250000002 bytes)
  $b=1/0; // и это
} catch (Exception $e) {
  echo 'Caught exception: ',  $e->getMessage(), "\n";
}

Или настроить php (консольный режим), чтобы выделял память.
  • Вопрос задан
  • 728 просмотров
Решения вопроса 2
DevMan
@DevMan
$a[1250000000]='b' - коректное выражение. что там ловить?
$b=1/0; - ворнинг, который ловится через стандартную set_error_handler .

то есть как-то так:
<?php
function error_handler( $errno, $errmsg, $filename, $linenum, $vars ) {
		// error was suppressed with the @-operator
		if ( 0 === error_reporting() )
			return false;

		if ( $errno !== E_ERROR )
			throw new \ErrorException( sprintf('%s: %s', $errno, $errmsg ), 0, $errno, $filename, $linenum );

}
set_error_handler( 'error_handler' );

try {
	$a[1250000000]='b'; // Это поймать надо
	$b=1/0; // и это
} catch (Exception $e) {
	echo 'Caught exception: ',  $e->getMessage(), "\n";
}
ideone.com/54gPMt
Ответ написан
@t38c3j
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы