2013-09-06 3 views
0

Я пытаюсь формат ввода данных пользователем с помощью следующего кода:Как справиться с этой ErrorException в PHP

$userInput="blalalbla";//assume the user is inputing wrong data, they are supposed to input it like "12:30" 
try{ 

    $timeStr=explode(":",$userInput); 
    $time=(new Datetime())->setTime($timeStr[0],$timeStr[1]); 
}catch(ErrorException $e){ 

} 

Однако, если вход не в нужном формате, laravel4 всегда сгореть ErrorException и я не имеют возможности поймать его. Поскольку пользовательский ввод может быть неправильным по-разному, я думал, что это самый элегантный способ обработки валидации. Как смешно, как это звучит, ErrorExceptions, кажется, непривлекательны. Какие у меня есть другие варианты?

+0

'улов (ErrorException $ е)' – Sammitch

+0

Не работает для меня :( –

+0

вы уверены, что именно этот блок кода является один метания исключение? – Sammitch

ответ

0

установить глобальный обработчик ошибок

set_exception_handler (handler); 

function handler($e) { 
    if($e instanceof TheExceptionYouWantToHandle) { 
     //then handle it 
    } 
} 
+0

Я не хочу обрабатывать все ошибки, просто те, которые, возможно, произойдут в этой части кода –

1

Фактическая ошибка, полученный в вашем коде является PHP Примечание. Вы не можете catch, потому что это не исключение в этот момент времени. Laravel определяет класс Illuminate\Exception\Handler и использует PHP set_error_handler(), чтобы превратить ошибки PHP в ErrorExceptions.

Чтобы использовать блок try/catch в вашем контроллере, вам придется выбросить исключение самостоятельно в этой области (или использовать код, который генерирует исключения). Однако, как прокомментировали большинство, вы должны делать соответствующую проверку ввода и санитарию до фактического использования ввода в любом коде. Независимо от того, является ли бедный ввод исключений, полностью зависит от вас.

Смежные вопросы