I was trying out PHP exceptions for my project. But it turns out that the exception is thrown successfully but not being caught successfully by the code I wrote.
The code:
try{
require_once(MASTER_PHP."/master_validation.php");
require_once(MASTER_PHP."/master_user.php");
require_once(MASTER_PHP."/master_db.php"); require_once(MASTER_PHP."/master_secure.php");
require_once(MASTER_PHP."/master_ui.php");
require_once(MASTER_PHP."/master_mail.php");
require_once(MASTER_PHP."/master_filehandling.php");
require_once(MASTER_PHP."/master_archive.php");
require_once(MASTER_PHP."/master_date.php");
require_once(MASTER_PHP."/master_social.php");
require_once(MASTER_PHP."/master_message.php");
require_once(MASTER_PHP."/master_gallery.php");
require_once(MASTER_PHP."/master_backup.php");
require_once(MASTER_PHP."/master_payment.php");
require_once(MASTER_PHP."/master_sms.php");
require_once(MASTER_PHP."/master_xml.php");
$filterobj=new ta_filtervalue();
$filterobj->filterrequest();
global $noecho;
if($noecho!="yes")
{
$utilityobj=new ta_utilitymaster();
$utilityobj->includeextassets();
}
}
catch (Exception $e)
{
$custerrcode=$e->getMessage();
$dbobj=new ta_dboperations();
$res=$dbobj->dbquery("SELECT * FROM ".ERROR_CODES." WHERE ".errordb_errcode."='$custerrcode' LIMIT 0,1",DB_ERROR);
$errmsg=$res[0][changesqlquote(errordb_errdesc,"")];
$errpriority=$res[0][changesqlquote(errordb_errpriority,"")];
$errcallback1=$res[0][changesqlquote(errordb_errcallback1,"")];
$errcalltext1=$res[0][changesqlquote(errordb_errcallbacktext1,"")];
$errcallback2=$res[0][changesqlquote(errordb_errcallback2,"")];
$errcalltext2=$res[0][changesqlquote(errordb_errcallbacktext2,"")];
$errtitle=$res[0][changesqlquote(errordb_errtitle,"")];
$errobj=new ta_errorhandle();
$errobj->senderror($errmsg,$custerrcode,$errpriority,$errcallback1,$errcalltext1,$errcallback2,$errcalltext2,$errtitle);
}
If the exception occurs in master_user.php
(required file) it has to be caught in the file which requires it. But it does not catch the exception.
The way I throw the exception:
throw new Exception('#ta@0000000_0000000');
where the string inside is the error code.
The error message:
Fatal error: Uncaught exception 'Exception' with message '#ta@0000000_0000000' in
C:\xampp\htdocs\techahoy\securedir\phpmaster\master_user.php:19 Stack trace: #0
C:\xampp\htdocs\techahoy\login\profile.php(4): ta_userinfo->userinit() #1 {main} thrown in
C:\xampp\htdocs\techahoy\securedir\phpmaster\master_user.php on line 19
Looks like (almost) the same as in here .
require() is identical to include() except upon failure it will also produce a fatal E_COMPILE_ERROR level error. In other words, it will halt the script
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.