如何在PHP中处理此ErrorException

时间:2013-09-06 21:17:13

标签: php exception laravel laravel-4

我正在尝试使用以下代码格式化用户输入:

$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似乎无法捕获。我还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

您的代码中收到的实际错误是PHP通知。你不能catch它,因为它在那个时间点不是例外。 Laravel定义了类Illuminate\Exception\Handler并使用PHP的set_error_handler()将PHP错误转换为ErrorExceptions。

要在控制器中使用try / catch块,您必须自己在该区域中抛出异常(或使用抛出异常的代码)。但是,正如大多数人所评论的那样,在实际使用任何代码中的输入之前,您应该进行适当的输入检查和卫生。输入输出异常是否完全取决于你。

答案 1 :(得分:0)

设置全局错误处理程序

set_exception_handler (handler);

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