我真的需要你的帮助......
如何在级联中捕获异常? 我有一个函数(A)调用另一个文件(B)中的另一个函数调用另一个文件(C)中的另一个函数。 如何进入函数A的函数C,函数C的错误? 可能吗? 看下面我的例子......我试着尽可能清楚......
// This code is in a file ( file A ) that call a function of a file B
require_once('/User_Login.php');
try
{
CREATE_NEW_User_Login(arr_Test, 'hello');
return true;
}
catch(Exception $e)
{
echo $e->getMessage();
return false;
}
}
// This code is in another file ( file B ) that call a function of a file C
public function CREATE_NEW_User_Login($_INPUT_Array = null, $_INPUT__Password = null)
{
// Db connection...
require_once('/User__DBclass.php');
$DBCl_User = new User($DBConn, null);
$DBCl_User->SET__CLASS_ATTRIBUTES_Value__by_Array($_INPUT_Array);
$DBCl_User->SETTER__user_pass(md5($_INPUT__Password));
$this->config['mysqli']->beginTransaction();
try
{
$DBCl_User->INSERT__NEW_ROW())
return true;
}
catch(Exception $e)
{
echo $e->getMessage();
return false;
}
}
// This code is in another file ( file C )
// In the User Class ( file: User__DBclass.php )
public function INSERT__NEW_ROW()
{
$this->config['stmt'] = $this->config['mysqli']->prepare('INSERT INTO tbl_user
SET user_id = :user_id,
user_name = :user_name,
act_code = :act_code;');
$this->config['stmt']->bindParam(':user_id', $this->user_id, PDO::PARAM_INT);
$this->config['stmt']->bindParam(':user_name', $this->user_name, PDO::PARAM_STR);
$this->config['stmt']->bindParam(':act_code', $this->act_code, PDO::PARAM_STR);
try
{
$this->config['stmt']->execute();
$this->user_id = intval($this->config['mysqli']->lastInsertId());
return $this->user_id;
}
catch(PDOException $e)
{
echo $e->getMessage();
return false;
}
}
答案 0 :(得分:2)
这是Exception的基本组合:如果你没有直接捕获异常,那么这个异常会被抛到upper元素,依此类推到“Root script”。
注意,您必须捕获异常,否则您将收到错误。
您还可以“重新”从catch块中抛出异常,如下所示:
catch(PDOException $e) {
throw $e;
}
答案 1 :(得分:2)
如果你想级联异常,那么你需要再次抛出它们而不是只返回false。
您可以为每个异常创建一个新的异常类型,也可以创建一般异常并设置相应的消息和代码。
catch(Exception $e)
{
//do something here if you want
throw $e;
}
答案 2 :(得分:1)
只是不要在抛出它的函数中捕获异常。然后它会被你的调用函数捕获。