我需要从一些php本机函数中捕获一些警告,然后处理它们.
特别:
array dns_get_record ( string $hostname [, int $type= DNS_ANY [, array &$authns [, array &$addtl ]]] )
Run Code Online (Sandbox Code Playgroud)
当DNS查询失败时,它会发出警告.
try/ catch不起作用,因为警告不是例外.
我现在有2个选择:
set_error_handler 看起来有点矫枉过正,因为我必须使用它来过滤页面中的每个警告(这是真的吗?);
调整错误报告/显示,以便这些警告不会回显到屏幕,然后检查返回值; 如果是false,则没有找到主机名的记录.
这里的最佳做法是什么?
在您看来,使用@运算符来抑制PHP中的错误/警告是否有效,而您可能正在处理错误?
如果是这样,你会在什么情况下使用它?
欢迎使用代码示例.
编辑:回复者的注意事项.我不打算关闭错误报告,但是,例如,通常的做法是使用
@fopen($file);
Run Code Online (Sandbox Code Playgroud)
然后检查......但是你可以通过这样做摆脱@
if (file_exists($file))
{
fopen($file);
}
else
{
die('File not found');
}
Run Code Online (Sandbox Code Playgroud)
或类似的.
我想问题是 - 是否有任何@HAS用于抑制错误,不能以任何其他方式处理?