麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
关于php5 中不可知异常的捕捉 [原创]
悬赏分:20 - 2007年08月15日

刚看了一个贴说php5不能捕捉不可知异常 这里我用exception & set_error_handler 来实现,但有部分工作起来不完善,请大家指正 [php] <? class MyException extends Exception{ protected $userErrMsg = ""; protected $userErrCode = -1; protected $fatal = false; /* userErrCode definition 0 -- Fatal error, program needs to stop */ function __construct($userErrInfo="", $userErrNum=-1, $sysErrInfo="", $sysErrNum=-1) { $this->userErrMsg = $userErrInfo; //set user defined error number and message $this->userErrCode = $userErrNum; if($this->userErrCode == ERR_FATAL) $this->fatal = true; parent::__construct($sysErrInfo, $sysErrNum); //set system error code and message } //Output user defined error message public function getUserMessage() { if ($this->userErrMsg !== "") return $this->userErrMsg; else return "User Error Message Not Found"; } //Output user defined error code public function getUserCode() { if ($this->userErrCode !== -1) return $this->userErrCode; else return "User Error Code Not Found"; } public function fatal() { return $this->fatal; } }// end of MyException class define("ERR_FATAL", 0); define("ERR_WARNING", 1); define("ERR_NOTICE", 2); error_reporting(E_STRICT); //report all error function myErrorHandler($errno, $errstr, $errfile, $errline) { switch ($errno){ case E_ERROR: //fatal runtime error $errMsg = "Error#[$errno]: $errstr \n"; $errMsg.= "Fatal error in line $errline of file $errfile\n"; $errMsg.= "PHP " . PHP_VERSION . " (" . PHP_OS . ")\n"; $errMsg.= "Aborting...\n"; throw new MyException($errMsg, ERR_FATAL); break; case E_NOTICE: $errMsg = "NOTICE: [$errno] $errstr\n"; $errMsg.= "Error in line $errline of file $errfile\n"; throw new MyException(nl2br($errMsg), ERR_NOTICE); break; break; case E_WARNING: $errMsg = "WARNING: [$errno] $errstr\n"; $errMsg.= "Error in line $errline of file $errfile\n"; throw new MyException(nl2br($errMsg), ERR_WARNING); break; default: throw new MyException("Unkown error type: [$errno] $errstr
\n", ERR_NOTICE); break; } } // set to the user defined error handler set_error_handler("myErrorHandler"); try{ echo "message before error
"; //will print //以下是两个错误,一个是除零,另外是没定义 //因为每个错误都会触发catch,所以一次只能测一个,其他的用 //注释掉 // $a = 6/0; //trigger a division error echo $abc; //trigger an undefine variable error // $returnValue = undefinedFunction(); //此错误捕捉不到,高手请解释 echo "message after error"; //wont print because the error above has been catched } catch(MyException $e){ echo $e->getUserMessage(); } ?> [/php]

提问者:kev   08-15 08:08
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
3 + 77 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM