如何为特定的php函数禁用错误,同时知道错误发生了?例如,我使用一个php函数parse_url来解析一个url数组,有时它会返回一个错误,我想要做的是一旦发生错误就解析下一个url,而不是在屏幕上显示它(错误)。 / p>
答案 0 :(得分:3)
您可能需要查看set_error_handler()
。
您可以执行任何想要注册自己的处理程序的事情。
答案 1 :(得分:2)
@是邪恶的。
您可以使用:
try {
// your code
} catch (Exception $e) {
// a block that executed when the exception is raised
}
答案 2 :(得分:2)
函数之前的@符号将抑制错误消息,而parse_url()在出错时返回false,所以只需捕获它。
if(@parse_url($url) === false) {
//Error has been caught here
}
答案 3 :(得分:1)
听起来像是在寻找自定义错误处理程序
答案 4 :(得分:1)
最好的方法是使用此处列出的技术http://php.net/manual/en/class.errorexception.php将php“错误”转换为异常,然后像处理其他语言一样处理异常:
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
try {
parse_url(...)
} catch(Exception $e) {
答案 5 :(得分:0)
使用@
为您的函数调用添加前缀,因此使用@parse_url()
应隐藏错误
答案 6 :(得分:0)
要为特定语句添加静默错误,只需添加@
。
实施例
$file = @file_get_contents($url);
当找不到$ url时,file_get_contents
会抛出错误。
您可以在任何地方使用@符号来静音任何语句。像:
$i = @(5/0);