代码之家  ›  专栏  ›  技术社区  ›  Sam

无法捕获PHP中的异常

  •  0
  • Sam  · 技术社区  · 7 年前

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

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

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

    注意:未定义索引:日期

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

    3 回复  |  直到 4 年前
        1
  •  2
  •   Raj Swami    7 年前

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

        2
  •  1
  •   BSB    7 年前

    这只是一个通知。您可以按以下方式检查它是否存在:

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

    我已添加

        3
  •  0
  •   ARJUN KP    7 年前

    PHP-try不会捕获任何E\u通知或E\u警告。

    为了解决您的问题,不需要try catch。

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