--php中的异常和错误的概念是有区别的,所以处理机制也有所不同,也不会相互捕获
但是可以通过ErrorException利用自定义错误函数将错误转换成异常
而抛出异常的地方自然可以直接变成抛出错误

-*****-

--异常处理机制
throw抛出的异常实例必须是或继承于Exception

--try{throw New Exception($errmsg, $errtype)}catch{...}处理机制
catch必须紧接在try结构后面,throw必须放在try结构里面,每种类型的throw必须有对应的catch
当异常抛出,抛出异常时所在的代码块的代码将不会继续执行,而是尝试查找第一个能与之匹配的 catch,执行完毕后跳转到最后一个 catch 的后面继续执行

--自定义函数处理机制
set_exception_handler($callbackexc)
回调函数callbackexc(Exception $exc)
此种方式下throw可以不必放在try结构中
如果try结果没有匹配到对应的catch就会采用这种机制,否则产生错误
调用自定义处理函数后,脚本停止执行

-*****-

--错误分级,通过一系列的常量来区别,通过位运算进行相互组合,以获得其他级别
--php处理机制
php.ini.error_reporting/error_reporting()设置错误级别
php.ini.display_errors错误是否浏览器显示
php.ini.log_errors/error_log错误是否输出到文件,错误文件位置

--自定义函数处理机制
set_error_handler($callback, $errtype)
回调函数$callback( int $errcode , string $errmsg [, string $errfile [, int $errline [, array $errcontext ]]] )
错误级别$errtype,设置捕获的错误级别,不受error_reporting()和php.ini影响,未过滤的错误级别,仍被默认机制捕获,此参数丢失捕获所有错误
解析错误或致命的运行时错误,仍被默认机制捕获

--错误产生方式
系统自动抛出的错误
trigger_error($errmsg, $errtype)/user_error手动抛出的错误,当$errtype不等于E_USER_*时,$errmsg自动替换成Invalid error type specified,$errtype自动替换成2/E_WARNING



更多相关文章

  1. APMServ 在 Win7 下出现“APMServ-Apache 服务因 函数不正确。
  2. 从。net调用Magento API,并得到“位于XYZ的HTTP服务太忙”的错误
  3. 我得到了“致命错误:未捕获的SoapFault异常:[客户机]SoapClient:
  4. ajax php bomt头 utf-8带来的奇怪问题。。返回值false 判断也是f
  5. 编译php时遇到的错误
  6. MySQL错误1046:未选择数据库
  7. 解析错误:语法错误,E:\xampp\htdocs\online\viewhistory >中
  8. PHP实现接口方法时出现致命错误
  9. JSON解析错误:无法识别的标记'<'处于角度

随机推荐

  1. Android利用IP地址定位城市(全世界可用)
  2. [Android 新特性] 15项大改进 Android 4.
  3. Android中如何查看内存(下)
  4. 在不同状态下使用两个图像切换按钮
  5. Android——PreferenceActivity简单使用
  6. 【Android实战】----Android Retrofit2.1
  7. Android在Service中弹出对话框(Dialog),即
  8. Android中的内存储、外存储概念、文件操
  9. 作物形象与毕加索相一致。
  10. Android tabHost是不可见的?为什么不用这