php错误控制运算符@ or die()实例用法详解

伊谢尔伦
发布: 2017-06-21 14:11:57
原创
7683人浏览过

php 支持一个错误控制运算符:@。当将其放置在一个 php 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

如果用 set_error_handler() 设定了自定义的错误处理函数,仍然会被调用,但是此错误处理函数可以(并且也应该)调用 error_reporting() ,而该函数在出错语句前有 @ 时将返回 0。

如果激活了 track_errors 特性,表达式所产生的任何错误信息都被存放在变量 $php_errormsg 中。此变量在每次出错时都会被覆盖,所以如果想用它的话就要尽早检查。

php忽略错误符号 @

@是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 必需。规定在退出脚本之前写入的消息或状态号。状态号不会被写入输出。

Linfo.ai
Linfo.ai

Linfo AI 是一款AI驱动的 Chrome 扩展程序,可以将网页文章、行业报告、YouTube 视频和 PDF 文档转换为结构化摘要。

Linfo.ai 104
查看详情 Linfo.ai

如果 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()实例用法详解的详细内容,更多请关注php中文网其它相关文章!

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号