PHP中的错误与异常处理
try{
echo 1%0;
}catch(Exception $e){
echo $e->getMessage();
}
如上代码,一直以为Exception是可以捕获到异常,实际上不能。以下内容指的是PHP5的环境。
PHP异常
什么是异常
在PHP中异常指的是可以预料到的问题,PHP只能手动抛出异常,例如被除数为0,错误的数据类型,数据库连接错误都不属于异常,而属于错误,所以在PHP5中异常处理确实很鸡肋。
异常捕获
try{
throw new Exception('This is a execption');
}catch(Exception $e){
echo $e->getMessage();
}
PHP错误
什么是错误
首先warning、notice都是错误。错误属于php脚本自身的问题,大部分情况是由错误的语法,服务器环境导致,使得编译器无法通过检查,甚至无法运行的情况。只是他们的级别不同而已,并且错误是不能被try-catch捕获。
错误的级别
Fatal Error:致命错误(脚本终止运行)
E_ERROR // 致命的运行错误,错误无法恢复,暂停执行脚本
E_CORE_ERROR // PHP启动时初始化过程中的致命错误
E_COMPILE_ERROR // 编译时致命性错,就像由Zend脚本引擎生成了一个E_ERROR
E_USER_ERROR // 自定义错误消息。像用PHP函数trigger_error(错误类型设置为:E_USER_ERROR)
Parse Error:编译时解析错误,语法错误(脚本终止运行)
E_PARSE //编译时的语法解析错误
Warning Error:警告错误(仅给出提示信息,脚本不终止运行)
E_WARNING // 运行时警告 (非致命错误)。
E_CORE_WARNING // PHP初始化启动过程中发生的警告 (非致命错误) 。
E_COMPILE_WARNING // 编译警告
E_USER_WARNING // 用户产生的警告信息
N