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是等价的,用来终止当前脚本,常用在调试程序的时候。

以上就是php错误控制运算符@ or die()实例用法详解的详细内容,更多请关注Work网其它相关文章!

09-19 09:56