PHP教程

PHP错误控制运算符

一、错误控制运算符

在PHP编程中,错误控制运算符是一种用于处理和报告错误的机制。它提供了一种简单而有效的方式来捕获和处理可能发生的错误情况。

PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误诊断都被抑制。如果用 set_error_handler() 设定了自定义的错误处理函数,即使诊断信息被抑制,也仍然会被调用。

注意:PHP 8.0.0 之前,如果错误被 @ 运算符抑制,则在自定义错误处理程序中调用 error_reporting() 将始终返回 0。PHP 8.0.0 起,返回值为 E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE。

error_get_last() 返回数组中的 "message" 元素储存了表达式产生的任意错误信息。 此函数的返回结果会随着每次错误的发生而相应变化,所以需要尽早检查。

<?php
/* 故意文件错误 */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '" . error_get_last()['message'] . "'");

// 这适用于所有表达式,而不仅仅是函数:
$value = @$cache[$key];
// 如果索引 $key 不存在,则不会发出通知。
?>

注意:

@ 运算符只对 表达式 有效。 对新手来说一个简单的规则就是:如果能从某处获得值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数调用,某些语言构造调用(例如 include )等等之前。 不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。

PHP 8.0.0 之前,@ 运算符会禁用导致脚本停止运行的严重错误。 例如在调用一个不存在的函数前添加 @,由于函数不可用或者输入错误, 将会导致脚本终止,而不会说明原因。

二、程序执行函数

这些程序执行函数和执行运算符是紧密关联的:

  • escapeshellarg : 把字符串转义为可以在 shell 命令里使用的参数;
  • escapeshellcmd : shell 元字符转义;
  • exec : 执行一个外部程序;
  • passthru : 执行外部程序并且显示原始输出;
  • proc_close : 关闭由 proc_open 打开的进程并且返回进程退出码;
  • proc_get_status : 获取由 proc_open 函数打开的进程的信息;
  • proc_nice : 修改当前进程的优先级;
  • proc_open : 执行一个命令,并且打开用来输入/输出的文件指针;
  • proc_terminate : 杀死由 proc_open 打开的进程;
  • shell_exec : 通过 shell 执行命令并将完整的输出以字符串的方式返回;
  • system : 执行外部程序,并且显示输出。
广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com。(#改为@)

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

目录