最近应用开发的过程中出现了一个小问题,顺便记录一下原因和方法--函数用户
if(!file_exists("../func.php")){ die("文件不存在<br/>"); } else { $fp=fopen("../func.php","r"); echo "文件打开胜利<br/>"; //..关闭 fclose($fp); }
file_exists("func.php") or die("文件不存在<br/>");
<?php $file=fopen("welcome.txt","r"); ?>
Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in C:\webfolder\test.php on line 2
error_function(error_level,error_message,error_file,error_line,error_context)
参数分析:
参数 | 描述 |
---|---|
error_level | 必需。为用户定义的错误规定错误报告级别。必须是一个值数。 拜见下面的表格:错误报告级别。 |
error_message | 必需。为用户定义的错误规定错误消息。 |
error_file | 可选。规定错误在其中发生的文件名。 |
error_line | 可选。规定错误发生的行号。 |
error_context | 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。 |
这些错误报告级别是错误处置程序旨在处置的错误的不同的类型:
值 | 常量 | 描述 |
---|---|---|
2 | E_WARNING | 非致命的 run-time 错误。不暂停脚本执行。 |
8 | E_NOTICE | Run-time 通知。 脚本发明可能有错误发生,但也可能在脚本畸形运行时发生。 |
256 | E_USER_ERROR | 致命的用户生成的错误。这类似于程序员应用 PHP 函数 trigger_error() 设置的 E_ERROR。 |
512 | E_USER_WARNING | 非致命的用户生成的警告。这类似于程序员应用 PHP 函数 trigger_error() 设置的 E_WARNING。 |
1024 | E_USER_NOTICE | 用户生成的通知。这类似于程序员应用 PHP 函数 trigger_error() 设置的 E_NOTICE。 |
4096 | E_RECOVERABLE_ERROR | 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处置程序捕获。(拜见 set_error_handler()) |
8191 | E_ALL | 全部错误和警告,除级别 E_STRICT 以外。 (在 PHP 6.0,E_STRICT 是 E_ALL 的一部份) |
这些错误报告级别是错误处置程序旨在处置的错误的不同的类型:
值 | 常量 | 描述 |
---|---|---|
2 | E_WARNING | 非致命的 run-time 错误。不暂停脚本执行。 |
8 | E_NOTICE | Run-time 通知。 脚本发明可能有错误发生,但也可能在脚本畸形运行时发生。 |
256 | E_USER_ERROR | 致命的用户生成的错误。这类似于程序员应用 PHP 函数 trigger_error() 设置的 E_ERROR。 |
512 | E_USER_WARNING | 非致命的用户生成的警告。这类似于程序员应用 PHP 函数 trigger_error() 设置的 E_WARNING。 |
1024 | E_USER_NOTICE | 用户生成的通知。这类似于程序员应用 PHP 函数 trigger_error() 设置的 E_NOTICE。 |
4096 | E_RECOVERABLE_ERROR | 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处置程序捕获。(拜见 set_error_handler()) |
8191 | E_ALL | 全部错误和警告,除级别 E_STRICT 以外。 (在 PHP 6.0,E_STRICT 是 E_ALL 的一部份) |
<?php //自定义自己的错误处置函数 function myerror($errno,$errstr){ echo "<font size='5' color='red'>$errno</font><br/>"; echo "错误信息:".$errstr; } //这里我们还须要改写set_error_handler /*PHP 的默许错误处置程序是内建的错误处置程序。我们盘算把上面的函数改革为脚本运行期间的默许错误处置程序。set_error_handler() 仅须要一个参数,可以添加第二个参数来规定错误级别。 */ set_error_handler("myerror",); echo($test); /*输出下面的内容: 8 错误信息:Undefined variable: test */ ?>
$age = 200; if($age>120){ trigger_error("the age is logger!",E_USER_WARNING); exit(); }
<?php //自定义自己的错误处置函数 function myerror($errno,$errstr){ echo "<font size='5' color='red'>$errno</font><br/>"; echo "错误信息:".$errstr; } //指定错误的处置函数, set_error_handler("myerror",E_USER_WARNING); $age = 200; if($age>120){ //E_USER_WARNING 这里必须和制订错误处置函数对应,否则还是会调用系统错误处置函数 trigger_error("the age is logger!",E_USER_WARNING); exit(); } /*512 错误信息:the age is logger! */ ?>
<?php //设置时区 date_default_timezone_set("Asia/Chongqing"); //自定义自己的错误处置函数 function myerror($errno,$errstr){ $error_info="错误信息:".$errno.$errstr; error_log(date("Y-m-d G-i-s").$error_ingo."\r\n",3,"1.txt"); } set_error_handler("myerror",E_USER_WARNING); $age = 200; if($age>120){ trigger_error("the age is logger!",E_USER_WARNING); exit(); } ?>
<?php //创立一个抛出异常的函数 function checkNum($number){ if($number >1){ throw new Exception("Value must be 1 or little!<br/>"); } return true; } //在 try 代码块中触发异常 try{ $num = 2; checkNum($num);//AAAA echo "如何抛出异常,这个将不会被执行!<br/>"; }catch(Exception $e){ //捕获异常 echo 'Message:'.$e->getMessage(); } echo "继承执行<br/>"; ?>
<?php function my_exception($e){ echo "我是顶级处置器:".$e->getMessage.$e->getline; } //修改默许的顶级异常处置函数 set_exception_handler("my_exception"); function a1($val){ if($val>100){ //抛出异常 throw new Exception("val > 100!<br/>"); } } function a2($val){ if($val=="jsh"){ //抛出异常 throw new Exception("val jsh!<br/>"); } } try{ a2("jsh");//这是会抛出异常 }catch(Exception $e){ //获取异常 echo $e->getMessage(); //可以继承抛出,这是会启动PHP默许的异常处置机制 //我们可以自己定义一个顶级异常处置函数 throw $e; } ?>
<?php /** * 自定义一个异常处置类 */ class MyException extends Exception { // 重定义构造器使 message 变为必须被指定的属性 public function __construct($message, $code = 0) { // 自定义的代码 // 确保全部变量都被正确赋值 parent::__construct($message, $code); } // 自定义字符串输出的样式 */ public function __toString() { return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; } public function customFunction() { echo "A Custom function for this type of exception\n"; } } /** * 创立一个用于测试异常处置机制的类 */ class TestException { public $var; const THROW_NONE = 0; const THROW_CUSTOM = 1; const THROW_DEFAULT = 2; function __construct($avalue = self::THROW_NONE) { switch ($avalue) { case self::THROW_CUSTOM: // 抛出自定义异常 throw new MyException('1 is an invalid parameter', 5); break; case self::THROW_DEFAULT: // 抛出默许的异常 throw new Exception('2 isnt allowed as a parameter', 6); break; default: // 没有异常的情况下,创立一个对象 $this->var = $avalue; break; } } } // 例子 1 try { $o = new TestException(TestException::THROW_CUSTOM); } catch (MyException $e) { // 捕获异常 echo "Caught my exception:<br/>", $e; $e->customFunction(); } catch (Exception $e) { // 被忽略 echo "Caught Default Exception:<br/>", $e; } /* // 执行后续代码 var_dump($o); echo "<br/>"; // 例子 2 try { $o = new TestException(TestException::THROW_DEFAULT); } catch (MyException $e) { // 不能匹配异常的种类,被忽略 echo "Caught my exception\n", $e; $e->customFunction(); } catch (Exception $e) { // 捕获异常 echo "Caught Default Exception\n", $e; } // 执行后续代码 var_dump($o); echo "<br/>"; // 例子 3 try { $o = new TestException(TestException::THROW_CUSTOM); } catch (Exception $e) { // 捕获异常 echo "Default Exception caught\n", $e; } // 执行后续代码 var_dump($o); echo "<br/>"; // 例子 4 try { $o = new TestException(); } catch (Exception $e) { // 没有异常,被忽略 echo "Default Exception caught\n", $e; } */ // 执行后续代码 var_dump($o); echo "<br/>"; ?>
文章结束给大家分享下程序员的一些笑话语录: 腾讯的动作好快,2010年3月5日19时28分58秒,QQ同时在线人数1亿!刚刚看到编辑发布的文章,相差才2分钟,然后连专题页面都做出来了,他们早就预料到了吧?(其实,每人赠送10Q币,轻轻松松上两亿!)
--------------------------------- 原创文章 By
函数和用户
---------------------------------