Неустранимая ошибка: необработанное исключение без блока try/catch
Я пытаюсь выдать исключение, когда поле формы пусто, а также, когда запрос вставки не выполнен. Я видел, как кто-то генерировал исключения раньше, без использования блоков try / catch и без включения класса Exceptions. Кто-нибудь знает, как мне поступить?
Это ошибка, которую я получаю, когда не заполняю все поля:
Неустранимая ошибка: необработанное исключение "Исключение" с сообщением "Ошибка: пустые поля: заголовок, номер телефона, электронная почта" в строке /vagrant/web/Assignment4/Person.php в строке 94 Исключение: ошибка: следующие поля пусты - Название, номер телефона, электронная почта, в /vagrant/web/Assignment4/Person.php на линии 94 Стек вызовов: 0,0014 638168 1. {main}() /vagrant/web/Assignment4/Form.php:0 0,0172 698568 2. Person->insert() /vagrant/web/Assignment4/Form.php:179
public function insert()
{
//Storing required $_POST array fields in variable for isset function
$errorArray = array();
$expectedValues = array(
"firstName" => "First Name",
"lastName" => "Last Name",
"title" => "Title",
"office" => "Office",
"phoneNumber" => "Phone Number",
"email" => "Email",
);
//Checking to see if all fields are filled in
foreach ($expectedValues as $field => $humanName) {
if (empty($_POST[$field])) {
$errorArray[] = $humanName . ", ";
}
}
if (count($errorArray) > 0) {
throw new Exception("Error: The following fields are empty- " .implode(' ', $errorArray));
}
else{
//If they are, insert them into the Perosn table
$insert = $this-> doQuery("INSERT INTO Person
VALUES(
'$_POST[firstName]',
'$_POST[lastName]',
'$_POST[title]',
'$_POST[office]',
'$_POST[phoneNumber]',
'$_POST[email]')");
//If insert query is successful, return true
if ($insert === true){
echo "<h2>" . "Congragulations! You now work for Assignment 4 Incorporated" . "</h2>";
return true;
}
//If not, throw an exception
/* else{
throw new Exception
("<p>" . "Error: Query was unsuccessful:" . " " . $this->error . "</p>");
}
try{
$insert == true;
}
catch (Exception $x){
echo $x->getMessage;
}
*/
}
}
1 ответ
Вы не можете выбросить ошибку, не пытаясь что-то сделать;
$errorArray = array();
$expectedValues = array(
"firstName" => "First Name",
"lastName" => "Last Name",
"title" => "Title",
"office" => "Office",
"phoneNumber" => "Phone Number",
"email" => "Email",
);
try{
foreach ($expectedValues as $field => $humanName) {
if (empty($_POST[$field])) {
$errorArray[] = $humanName . ", ";
}
}
if (count($errorArray) > 0) {
throw new Exception("Error: The following fields are empty- " .implode(' ', $errorArray));
}else{
$insert = $this-> doQuery("INSERT INTO Person
VALUES(
'$_POST[firstName]',
'$_POST[lastName]',
'$_POST[title]',
'$_POST[office]',
'$_POST[phoneNumber]',
'$_POST[email]')"
);
if ($insert === true){
echo "<h2>" . "Congragulations! You now work for Assignment 4 Incorporated" . "</h2>";
return true;
}
}
}catch(Exception $e){
echo $e->getMessage();
}
в своем коде вы выдавали ошибку еще до того, как пытались, хинтовал фатальную ошибку "необработанное исключение без блока try/catch". код поймал ошибку, но на самом деле ничего не пытался поймать.