Это мой блок 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"]);