2013-04-20 2 views
2

Я пытался использовать исключения PHP для моего проекта. Но оказывается, что исключение выбрано успешно, но не удалось поймать код, который я написал.Проблемы с обработкой исключений в php

Код:

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

Если исключение происходит в master_user.php (требуется файл) он должен быть пойман в файл, который требует его. Но это не исключение.

Как я бросить исключение:

throw new Exception('#[email protected]_0000000'); 

где строка внутри кода ошибки.

Сообщение об ошибке:

Fatal error: Uncaught exception 'Exception' with message '#[email protected]_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 
+0

Таким образом, программа останавливается с ошибкой * uncaught exception *? – deceze

+0

извините. просто добавили сообщение об ошибке выше вместе с кодом. –

ответ

0

Похоже, (почти) такой же, как и в here.

require() идентичен include(), за исключением отказа, он также приведет к фатальной ошибке уровня E_COMPILE_ERROR. Другими словами, это будет halt сценарий

+0

после просмотра вашего комментария я попробовал изменить все требования, которые я использовал для включения, но та же проблема возникает .. есть ли другой выход? –

+1

Вы пытались использовать общий обработчик исключений, описанный в [set-exception-handler] (http://www.php.net/manual/de/function.set-exception-handler.php)? – xsign

+0

отлично работает ... добавьте его в качестве ответа. я приму это. –

Смежные вопросы