为什么PHP中没有引发异常


Why an Exception is not raised in PHP?

$keys = array( "layerName", "lat", "lon", "radius","CHECKBOXLIST");
$value = array();
try {
  foreach( $keys as $key ) {
    if ( isset($_GET[$key]) )
      $value[$key] = $_GET[$key];
    else
      throw new Exception($key ." parameter is not passed in GetPOI request.");
  }//foreach
}
catch(Exception $e) {
  echo 'Message: ' .$e->getMessage();
}

编写此代码是为了从get请求中获取参数值。如果在GET请求中没有传递这些参数中的任何一个,它应该引发一个异常。但在这种情况下,情况并非如此。可能是什么问题?

$_GET[$key]可能已设置但没有值,因此它将为$value[$key]分配一个空字符串值,而不是引发新的异常。我会重写您的if语句来检查空值。

if ( isset($_GET[$key]) === true && empty($_GET[$key]) === false )
{
    $value[$key] = $_GET[$key];
}
elseif ( isset($_GET[$key]) === true && empty($_GET[$key]) === true)
{
    throw new Exception($key ." parameter is not passed in GetPOI request.");
    break;
}

尝试在抛出异常后添加一个break。像这样:

if ( isset($_GET[$key]) )
    $value[$key] = $_GET[$key];
else{
    throw new Exception($key ." parameter is not passed in GetPOI request.");
    break;
}

--编辑--

我必须快速补充一点,我尝试运行您的代码,并按预期引发了一个异常。