php当有错误发生时自动调用预先设好的类或页面

 我来答
匿名用户
2014-10-13
展开全部
你好,你可以使用php的set_error_handler函数来自定义错误处理机制.
当有错误发生时,php的set_error_handler函数会捕获到该错误,并调用你自己定义的错误处理程序来处理错误.
set_error_handler — 设置一个用户定义的错误处理函数

使用实例:
/*****************************/

set_error_handler('my');
echo $a; //抛出一个变量未定义错误.
function my($a,$b){
echo "错误号是$a:"."<Br/>";
echo "错误描述$b:"."<Br/>";
}
/*****************************/
函数说明:

set_error_handler — 设置一个用户定义的错误处理函数

说明

mixed set_error_handler ( callable
$error_handler [, int $error_types = E_ALL |
E_STRICT ] )

设置一个用户的函数( error_handler )来处理脚本中出现的错误。

本函数可以用你自己定义的方式来处理运行中的错误, 例如,在应用程序中严重错误发生时,或者在特定条件下触发了一个错误(使用 trigger_error() ),你需要对数据/文件做清理回收。

重要的是要记住 error_types
里指定的错误类型都会绕过 PHP 标准错误处理程序, 除非回调函数返回了 FALSE 。
error_reporting()
设置将不会起到作用而你的错误处理函数继续会被调用 —— 不过你仍然可以获取 error_reporting 的当前值,并做适当处理。 需要特别注意的是带 @ error-control operator 前缀的语句发生错误时,这个值会是 0。

同时注意,在需要时你有责任使用 die() 。
如果错误处理程序返回了,脚本将会继续执行发生错误的后一行。

以下级别的错误不能由用户定义的函数来处理: E_ERROR 、
E_PARSE 、 E_CORE_ERROR
、 E_CORE_WARNING 、
E_COMPILE_ERROR 、
E_COMPILE_WARNING ,和在 调用 set_error_handler() 函数所在文件中产生的大多数
E_STRICT 。

如果错误发生在脚本执行之前(比如文件上传时),将不会 调用自定义的错误处理程序因为它尚未在那时注册。

参数

error_handler

用户的函数需要接受两个参数:错误码和描述错误的 string。 另外有可能提供三个可选参数:发生错误的文件名、发生错误的行号
以及发生错误的上下文(一个指向错误发生时活动符号表的 array)。 该函数可以表示为:

handler ( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]]
)

如果函数返回 FALSE ,标准错误处理处理程序将会继续调用。
errno
第一个参数 errno
,包含了错误的级别,是一个 integer。
errstr
第二个参数 errstr
,包含了错误的信息,是一个 string。
errfile
第三个参数是可选的, errfile
, 包含了发生错误的文件名,是一个 string。
errline
第四个参数是一个可选项, errline
, 包含了错误发生的行号,是一个 integer。
errcontext
第五个可选参数, errcontext
, 是一个指向错误发生时活动符号表的 array。 也就是说, errcontext
会包含错误触发处作用域内所有变量的数组。 用户的错误处理程序不应该修改错误上下文(context)。
error_types

就像error_reporting 的 ini 设置能够控制错误的显示一样,
此参数能够用于屏蔽 error_handler 的触发。 如果没有该掩码, 无论
error_reporting 是如何设置的, error_handler 都会在每个错误发生时被调用。
匿名用户
2014-10-13
展开全部
这个要看是什么错误,比如是变量没有定义之类的话,你判断下就可以的。一般的错误都能,语法问题的话 就不行了、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jrzyq111
推荐于2016-08-02 · 超过12用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:31.4万
展开全部
<?php
使用异常处理功能,需要你自己捕抓错误!

//创建可抛出一个异常的函数
function checkNum($number)
{
if($number>1)
{
throw new Exception("Value must be 1 or below");
}
return true;
}

//在 "try" 代码块中触发异常
try
{
checkNum(2);
//If the exception is thrown, this text will not be shown
echo 'If you see this, the number is 1 or below';
}

//捕获异常
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式