在一些 PHP 内置函数(例如 mkdir )中,在前面添加 @可以屏蔽该函数抛出的错误
那么自定义函数要如何实现这点呢?
我试了下throw new Exception和trigger_error都无法被 @屏蔽
|  |      1halfcoder      2016-09-16 17:19:23 +08:00 我记得 @ 好像实际就是在函数调用调整错误级别吧 | 
|  |      2cxbig      2016-09-16 20:52:26 +08:00 PHP 里 Exception 和其他的 Fatal error 这类不是一个概念。 一个好的设计是善用 Exception 做异常处理,而不是简单的用 @掩盖。 | 
|  |      3msxcms      2016-09-16 21:00:32 +08:00 不要这么处理错误 | 
|  |      4lslqtz      2016-09-16 21:12:57 +08:00 | 
|  |      5lslqtz      2016-09-16 21:23:06 +08:00 | 
|  |      6lslqtz      2016-09-16 21:26:53 +08:00 <?php function asd() { trigger_error('1',E_USER_ERROR); } @asd(); ?> C:\Users\lslqtz>php -f D:\***\1.php C:\Users\lslqtz> | 
|  |      8mokeyjay OP | 
|      9AbrahamGreyson      2016-09-17 21:21:00 +08:00 永远不要用 @ | 
|  |      10halfcoder      2016-09-17 21:29:53 +08:00 @mokeyjay 根据 PHP 官方文档, @ 符号作用于一个表达式上,用于抑制表达式计算过程中发生错误的消息显示,但是并不会阻止通过  set_error_handler() 设置的自定义错误处理函数的触发。其实际作用类似于在执行该表达式前先通过 error_reporting() 将错误报告级别设为 0 (关闭错误显示),执行完表达式后再恢复原有错误报告级别。 参见: http://php.net/manual/en/language.operators.errorcontrol.php http://php.net/manual/en/language.operators.errorcontrol.php#85042 |