Замечание PHP: Неопределенный индекс, хотя использование 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"] ничего нет, я все равно получаю сообщение об ошибке. Как я могу избежать получения этой ошибки?

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

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

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

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

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

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

 function api($id = 1) {} 

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

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

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

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