gpt4 book ai didi

php - fatal error : uncaught exception without try/catch block

转载 作者:可可西里 更新时间:2023-10-31 23:07:37 27 4
gpt4 key购买 nike

我试图在表单字段为空以及插入查询不成功时抛出异常。我见过有人在没有使用 try/catch block 并且没有包含 Exceptions 类的情况下抛出异常。有谁知道我会怎么做?

这是我在没有填写所有字段时遇到的错误:

fatal error :在第 94 行的/vagrant/web/Assignment4/Person.php 中出现未捕获的异常“异常”,消息为“错误:以下字段为空 - 标题、电话号码、电子邮件”异常:错误:以下内容字段为空 - 标题、电话号码、电子邮件,位于第 94 行的/vagrant/web/Assignment4/Person.php 调用堆栈: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;
}
*/
}

}

最佳答案

如果不“尝试”某些东西,就不能抛出捕获错误;

$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();
}

在你的代码中,你在尝试之前抛出了一个错误,导致了 fatal error “没有 try/catch block 的未捕获异常”。代码捕获了一个错误,但它并没有真正 try catch 任何东西。

关于php - fatal error : uncaught exception without try/catch block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13105803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com