2013-08-06 2 views
12

Это моя попытка/поймать блок в PHP:PHP Примечание: Не определено индекс хотя использование TRY поймать

try 
{ 
    $api = new api($_GET["id"]); 
    echo $api -> processRequest(); 
} catch (Exception $e) { 
    $error = array("error" => $e->getMessage()); 
    echo json_encode($error); 
} 

Когда нет ничего в $_GET["id"], я все еще получаю ошибку уведомления. Как я могу избежать получения этой ошибки?

+2

использовать 'Исеть ($ _ GET [ 'ID'])' или 'array_key_exists ('ID', $ _GET);' .. миллион дубликатов, чтобы рассчитывать на этот вопрос .. – dbf

+0

if (isset ($ _ GET ['id'])) {$ api = new api ($ _ GET ['id']); } – Maximus2012

+7

Уведомление PHP не является исключением. – sangaran

ответ

21

использования isset функции для проверки, если переменная установлена ​​или нет:

if(isset($_GET['id'])){ 
    $api = new api($_GET["id"]); 
    echo $api -> processRequest(); 
} 
0

Попробуйте проверить, если $_GET был установлен

try 
{ 
    if(isset($_GET["id"])) 
    { 
     $api = new api($_GET["id"]); 
     echo $api -> processRequest(); 
    } 
} catch (Exception $e) { 
    $error = array("error" => $e->getMessage()); 
    echo json_encode($error); 
} 
1

Если отсутствие идентификатора означает, ничто не должно быть затем обработано, то вы должны тестировать отсутствие идентификатора и грамотно управлять сбоем.

if(!isset($_GET['id'] || empty($_GET['id']){ 
// abort early 
} 

THEN Продолжайте, и вы пытаетесь/поймаете.

Если, конечно, вы не должны были добавить подтянутость к API() так, что ответил с идентификатором по умолчанию, что вы бы объявить в функции

function api($id = 1) {} 

Таким образом, «все зависит», но попробуйте и выйдете раньше, если сможете.

+0

Обратите внимание, что' empty() 'не вызывает уведомления, если переменная не установлена. Таким образом, 'isset()' не требуется. –

0

Если вы хотите быстро и "грязный" решение, вы можете использовать

$api = new api(@$_GET["id"]); 
+11

Для детей дома это действительно грязно *, и вы не должны считать это решением. –

+1

@JasonMcCreary +1 для детей дома .. –

Смежные вопросы