Почему исключение не возникает в PHP? - PullRequest
0 голосов
/ 06 июня 2011
$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 ]

2 голосов
/ 06 июня 2011

$_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;
}
0 голосов
/ 06 июня 2011

Попробуйте добавить разрыв после выброса исключения. Как это:

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

- EDIT -

Я должен быстро добавить, что я попытался запустить ваш код и выдал исключение, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...