社区
基础编程
帖子详情
set_error_handle 和 at(@)符号的问题
xjwchy
2012-02-15 04:18:44
问题是这样的,我用set_error_handle 将一些系统错误或者警告信息写入到日志文件中。
但是对于一些api 比如fopen之类的,如果文件不存在的情况下也会跑到 自己写的错误处理函数中,之前是在fopen之前加上@符号,对诸如此类问题不进行显示。
如果我想在使用set_error_handle的情况下还能不把@的功能去掉。怎么做啊?
谢谢大侠们了
...全文
163
8
打赏
收藏
set_error_handle 和 at(@)符号的问题
问题是这样的,我用set_error_handle 将一些系统错误或者警告信息写入到日志文件中。 但是对于一些api 比如fopen之类的,如果文件不存在的情况下也会跑到 自己写的错误处理函数中,之前是在fopen之前加上@符号,对诸如此类问题不进行显示。 如果我想在使用set_error_handle的情况下还能不把@的功能去掉。怎么做啊? 谢谢大侠们了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuzuning
2012-02-20
打赏
举报
回复
经测试,#5的代码可以满足你的要求!
执行后,若
fopen('/tmp/foo', 'r');
失败,则显示
Unknown error type: [2] fopen(/tmp/foo) [function.fopen]: failed to open stream: No such file or directory
若
@fopen('/tmp/foo', 'r');
失败,则无任何显示
xjwchy
2012-02-20
打赏
举报
回复
[Quote=引用 3 楼 zgycsmb 的回复:]
帮顶
接分。。
[/Quote]
这样的话 也达不到需求啊。
fopen的文件如果不存在 会是个warning的,如果你的error_reporting里面有设置warning的话 一样会输出错误,而没有用set_error_handler的话,在fopen前面加一个@符号就不会输出了,现在是不想放过waring但是对于像这种的warning又可以放过,到底怎么做呢?
xjwchy
2012-02-20
打赏
举报
回复
感谢 5楼 7楼 恍然大悟
@会修改error_reporting的级别
xjwchy
2012-02-16
打赏
举报
回复
来帮帮忙啊?
阿飞呓语
2012-02-16
打赏
举报
回复
可以去掉,使用set_error_handler你只需要注意两点:
1.set_error_handler只会捕获error_reporting里定义的错误类型,这个可以在php.ini里配置,也可以使用函数设置;
2.自定义的错误处理函数返回值如果为false,则会触发php的默认错误处理。而返回值为true则不会触发php默认的错误处理,则看不到那个讨厌的报错了。
至于写法你可以参考一下。
<?php
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
//如果这个错误类型没有包含在error_reporting里
return;
}
switch ($errno) {
case E_USER_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
echo " Fatal error on line $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
exit(1);
break;
case E_USER_WARNING:
echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
break;
default:
echo "Unknown error type: [$errno] $errstr<br />\n";
break;
}
//返回false则会触发php的默认错误处理,反回true则只用自定义函数处理。
return true;
}
set_error_handler('myErrorHandler');
fopen('/tmp/foo', 'r');
heyli
2012-02-15
打赏
举报
回复
用try catch捕获
人工智能核心知识点_Python_
set
集合
集合与之前我们学习的列表类似,可以存储多个数据,但是这些数据是不重复的、无序的。本课程主要带领大家一起来了解集合的特性、定义、以及集合的新增、修改、查找元素、交集并集等知识点,学习本课程能够轻松掌握集合的基础知识并能够灵活的运用到实际的
问题
中来。
kernel oops
原创:kylin_zeng http://blog.chinaunix.net/uid/23795897.html 转载请尊重别人的辛苦劳动,请标明出处。 一、出错打出来的oops。 [kylin dbg]:gpio_direction_output.. [ 22.677734] [kylin dbg]:gpio_
set
_value [ 22.677758] Unable
Beetl页面模板文档
Beetl2.7 中文文档Beetl作者:李家智 xiandafu@126.com
arm linux debug notes (
error
note)
1. ret = sprdfb_panel_constructor(pan_node, fb_dev); if (ret) { pr_err("%s: failed to construct panel device\n", __func__); return -EFAULT; }%s, __func__,
PPL攻击详解
PPL表示“受保护的流程”,但在此之前,只有“受保护的流程”。Windows Vista / Server 2008引入了受保护进程的概念,其目的不是保护您的数据或凭据。其最初目标是保护媒体内容并符合DRM(数字版权管理)要求。Microsoft开发了此机制,以便您的媒体播放器可以读取例如蓝光,同时防止您复制其内容。当时的要求是映像文件(即可执行文件)必须使用特殊的Windows Media证书进行数字签名(如Windows Internals的“受保护的过程”部分所述)。
基础编程
21,886
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章