PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
如果用 set_error_handler() 设定了自定义的错误处理函数,仍然会被调用,但是此错误处理函数可以(并且也应该)调用 error_reporting() ,而该函数在出错语句前有 @ 时将返回 0。
如果激活了 track_errors 特性,表达式所产生的任何错误信息都被存放在变量 $php_errormsg 中。此变量在每次出错时都会被覆盖,所以如果想用它的话就要尽早检查。
php忽略错误符号 @
@是php语言里的一个忽略错误的字符,当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。例如:
@include("file.php");
需要注意的是,@ 运算符只对表达式有效。可以这样理解,如果能从某处得到值,就能在它前面加上 @ 运算符。
例如,可以把它放在变量、函数和 include 调用、常量等等之前。
不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。
另外,@通常是与or die()一同使用,例如:
(@include("file.php")) OR die("Could not find file.php!");
上述语句的意思是,如果包含file.php不成功的话,比如file.php文件不存在时,则在网页上打印“Could not find file.php!”,并且立即停止程序的执行。
如果没有加@这个字符,那么当include("file.php")返回错误时,网页上打印的是:
Warning: include(file.php) [function.include]: failed to open stream: No such file or directory Warning: include() [function.include]: Failed opening 'file.php' for inclusion (include_path='.;C:\php5\pear')
有关or die()一些用法
die()函数大家用得很熟了,不过or die()这样的写法,所产生的一些效果你也许还不知道。
首先理解下die()。
die定义和用法
die() 函数输出一条消息,并退出当前脚本。
语法
die(status)
status 必需。规定在退出脚本之前写入的消息或状态号。状态号不会被写入输出。
如果 status 是字符串,则该函数会在退出前输出字符串。
如果 status 是整数,这个值会被用作退出状态。退出状态的值在 0 至 254 之间。退出状态 255 由 PHP 保留,不会被使用。状态 0 用于成功地终止程序。
注:如果 PHP 的版本号大于等于 4.2.0,那么在 status 是整数的情况下,不会输出该参数。
php or die() 语句
经常看到这样的语句:
$file = fopen($filename, 'r') or die("抱歉,无法打开: $filename");
or在这里是这样理解的,因为在PHP中并不区分数据类型,所以$file既可以是int也可以bool,所以这样的语句不会报错。但其处理过程可能有些朋友不大明白。
其实在大多数的语言中, bool or bool这样的语句中,如果前一个值为真后一个值就不会再判断了。这里也是的,所以如果fopen函数执行正确的话,会返回一个大于0的int值(这其实就是"真"),后面的语句就不会执行了。
如果fopen函数执行失败,就会返回false,那么就会判断后面的表达式是否为真了。
结果执行了die()之后,不管返回什么,程序都已经停止执行了,并且显示指定的出错信息,也就达到了调试的目的。 就这样。
通常与错误管理一起使用的两个函数是die()和exit()(严格说来,它们是语言构造而不是函数,但是谁在意这些呢)。
当在脚本中调用die()和exit()时,将会终止整个脚本。
它们都可用于阻止脚本继续执行,而使得某些重要的操作(如建立一条数据库连接)不会发生。你还可以给die()和exit()传递一个将在浏览器中打印出来的字符串。
通常可以看到在OR条件语句中使用die()和exit()。
例如
include('config.inc.php') OR die ('Could not open the file. ');
在包含这样一行代码之后,如果PHP不能包含配置文件,将会执行die()语句,并且会打印could not open the file消息。
!defined('CURSCRIPT') && define('CURSCRIPT', ");//意思是如果没定义CURSCRIPT常量,则定义CURSCRIPT为空.
在全书和PHP手册中,你将会看到它的各种变体,因为它是一种处理错误的快捷方式(但可能处理过度),而无需使用自定义的错误处理程序。
其实die和exit是等价的,用来终止当前脚本,常用在调试程序的时候。
Atas ialah kandungan terperinci php错误控制运算符@ or die()实例用法详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!