为什么PHP中没有引发异常?

时间:2011-06-06 11:36:53

标签: php exception

$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请求中未传递任何这些参数,则应引发异常。但在这种情况下,它不会。可能是什么问题?

2 个答案:

答案 0 :(得分:2)

$_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;
}

答案 1 :(得分:-2)

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

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

- 编辑 -

我必须快速添加,我尝试运行您的代码并按预期引发异常。