2014-02-20 3 views
0

я уже попробовать этот пример:Исключение не поймать по Try/Вылов в PHP

<?php  
try { 
    Not_Exist(); 
} catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 
?> 

http://php.net/manual/en/language.exceptions.php Но ошибка не поймают:

Fatal error: Call to undefined function Not_Exist() in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\mysite\public_html\exception.php on line 3

Почему? Обычно я использую Dotnet. Возможно, я что-то пропустил.

+1

Это * не * исключение –

ответ

5

error не является исключением. Сам PHP не генерирует исключений при синтаксических ошибках, таких как отсутствующие функции. Вам понадобится set_error_handler(), чтобы «поймать» такие вещи - и даже тогда пользовательский обработчик ошибок не сможет обрабатывать ошибки разбора, такие как это.

2

В коде отсутствует исключение. Вы просто получаете фатальную ошибку. Если вы пытаетесь найти способ избежать фатальных ошибок, этот пост может помочь. How do I catch a PHP Fatal Error

Если вы пытаетесь поймать исключений, что-то вроде этого:

try { 
    throw new Exception("Exception Message"); 
} catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 
2

Потому что это fatal error, не является исключением. Вы захотите использовать метод PHP function_exists() и попробуйте что-то вроде:

try{ 
    function_exists(Not_Exist); 
} catch (Exception $e) { 
    // error here 
} 
// run Not_Exist here because we know its a valid function. 
Смежные вопросы