无法在PHP中捕获异常

时间:2017-09-30 05:15:38

标签: php try-catch

我尝试使用$ _GET将日期传递给php,否则它将使用当前日期。

  try {
    $selectedDate = $_GET['date'];
    echo 'try';
    echo $selectedDate;
  } catch (Exception $e) {
    $selectedDate = date('Y-m-d', time());
    echo 'catch';
  }

当我没有传递任何输入时,显示

  

注意:未定义的索引:日期

     

由于我使用了try catch块,为什么它不能运行catch块?

3 个答案:

答案 0 :(得分:2)

如果你仔细检查..未定义索引是一个通知也不例外.. 为避免这种情况,请使用isset()来设置检查日期

答案 1 :(得分:1)

它只是一个通知。您可以检查它是否存在,如下所示:

try {
    if(isset($_GET['date']))
      $selectedDate = $_GET['date'];
      echo 'try';
      echo $selectedDate;
  } catch (Exception $e) {
    $selectedDate = date('Y-m-d', time());
    echo 'catch';
  }

我已添加 if(isset($ _ GET [' date']))以检查日期的存在。

答案 2 :(得分:0)

PHP尝试不会捕获任何E_NOTICE或E_WARNING。

要解决您的问题,请不要使用catch。 请使用我附上的代码。

 try {
      $selectedDate = isset($_GET['date'])? $_GET['date'] : date('Y-m-d', time());
echo 'try';
echo $selectedDate;  

} catch (Exception $e) {
echo 'catch';

}