Примечание PHP: Undefined индекс, хотя использование try\catch

Это мой блок try/catch в PHP:

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

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

Ответ 1

используйте функцию isset, чтобы проверить, установлена ​​ли переменная или нет:

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

Ответ 2

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

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

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

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

function api($id = 1) {}

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

Ответ 3

Попробуйте проверить, установлен ли $_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);
}

Ответ 4

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

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