无法在PHP中捕获异常

问题描述 投票:0回答:3

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

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

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

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

尝试

既然我使用了try catch块,为什么它不会运行catch块?

php try-catch
3个回答
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
投票

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


0
投票

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

为了解决您的问题,尝试捕获不是必需的。请使用我附上的代码。

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

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

}
© www.soinside.com 2019 - 2024. All rights reserved.