当前位置:首页 » 编程语言 » php捕捉错误

php捕捉错误

发布时间: 2022-10-29 13:18:07

php编写过程中如何检测错误

一般 xx_query 函数执行的 sql 语句是 query 语句, insert, del, update这类使用 xx_exec()函数。函数一般都有返回值来表明是否成功,所以把函数返回值赋值给变量,然后判断函数返回值,如果成功再进行成功的操作,否则执行失败的操作。使用 var_mp($var) 打印返回值,即可查看函数的返回值

㈡ php 怎么捕获所有的异常

这个不是异常啊,这个是错误类型!!
你的错误类型提示设的太高了,这样适合在开发下使用。你可以在可能出现提示错误行前加上@符号就可以抑制提示错误。
php中档然有throw try catch结果语句,但是除了的是异常,也就是exception类。
你自己看看手册吧

㈢ 如何处理 PHP 的错误与异常

在PHP5中添加了类似于其它语言的错误异常处理模块。在 PHP代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。使用多个 catch 可以捕获不同的类所产生的异常。当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常。当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch。如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息。

㈣ 在PHP中检查PHP文件是否有语法错误的方法

PHP中try{}catch{}语句,任何调用 可能抛出异常的方法的代码都可以使用try语句。Catch语句用来处理可能抛出的异常。.另外检测PHP语法一般编辑器都已经有语法检测功能,比如
Zend Studio(PHP集成开发环境),也自带调试功能

㈤ 如何查看php代码语法错误

错误抑制符去掉错误信息,eval和echo一样并不是函数,不能使用变量函数的方法调用比如:$func = ‘eval’$func()这样的调用就是无效的。它会提示没有eval函数,如果你自己定义这么一个函数也是有问

错误抑制符去掉错误信息,eval和echo一样并不是函数,不能使用变量函数的方法调用比如:
$func = ‘eval’
$func()这样的调用就是无效的。它会提示没有eval函数,如果你自己定义这么一个函数也是有问题的。因为eval是一个关键字。
eval调用和include差不多,如果被包含文件中没有明确return就返回null。如果直接eval我们需要检查的文件会造成被检查的文件内代码被执行,这可不是我们想要的,我们只需要检查一下这个文件的语法是否正确。 我们可以在要检查的文件之前添加return 语句,让代码提前跳出,那么后面的代码就不会执行了。好的,就这么干。代码如下:
< ?PHP
if(!function_exists('PHP_check_syntax')) {
function PHP_check_syntax($file_name,
&$error_message = null) {
$file_content = file_get_contents($file_name);
$check_code = "return true; ?>";
$file_content = $check_code .
$file_content . "< ?PHP ";
if(!@eval($file_content)) {
$error_message = "file: " .
realpath($file_name) . " have syntax error";
return false;
}
return true;
}
}
if(!PHP_check_syntax("file.PHP", $msg)) {
echo $msg;
}
else {
echo "Woohoo, OK!";
}
< ?PHP
foreach:: a => b
?>
因为Parse error 是没法被 set_error_handler处理函数处理的。这个异常没办法catch到。所以才使用了@来抑制错误。这带来的问题就是我们无法得到详细的错误信息。 不过目前我需要的功能也只是检查语法是否正确。不正确的话重新编译模板文件,就这么简单,至于语法错误,在显示网页的时候自然会看得到。
PHP检查语法错误最好的办法就是这个被遗弃的PHP_check_syntax这个方法回到PHP中。下次再研究下他们是出于什么原因把这个函数去掉的。

㈥ PHP自定义门面以后显示错误

如果您是PHP老手,当然知道当PHP脚本出错时发生了什么事情。此时PHP解析器将在屏幕上给出错误信息,如 Fatal error: Call to undefined function on line 19 --,因此程序在此处终止。这个信息会吓到客户,他可能立即打电话和你进行咨询。
幸运的是,这里有解决办法。PHP拥有内置工具,可以让开发人员捕捉脚本错误然后将它们转到自定义的错误处理器。此时则可以对处理器进行编程显示更多关于错误的详细信息。还可以将错误写入文件或数据库以采取补救措施。有时候还可以对处理器编写程序忽略错误消息。
本文中,我将阐述如何使用PHP的错误处理API构建用户自定义的错误处理器,并且说明如何以简单而友好的方式显示和管理脚本的错误信息。
错误类型和报告级别
我们从最基本的开始。PHP有三种最基本的错误类型,从低级到高级分别为:注意、警告和错误(或致命错误)。通常情况下,注意和警告不会终止程序;但是致命错误则是危险故障(例如,调用一个没有定义的函数或参考一个不存在的对象),将导致程序中断。这些错误有可能在启动、解析、编译或运行时发生。
关键字如E_NOTICE, E_ERROR等用于表明错误的不同类型和等级。在PHP手册上可以获得它们的详细信息列表。
脚本阶段错误显示由error_reporting()函数进行控制。这一函数针对不同的错误等级设置不同的参数。表A给出了使用此函数报告警告和致命错误的脚本程序。
表A
<?php
// display warnings and errors
error_reporting(E_WARNING | E_ERROR);
// this will generate a notice, which will never be displayed
echo $undefinedVar;
// this will generate a fatal error, which will be displayed
callUndefFunc();
?>
将表B中的代码与上面的进行比较发现,Listing B中隐藏错误信息甚至隐藏致命信息,使得错误信息不会被显示出来。
表B
<?php
// turn off error display
// no errors will be displayed
error_reporting(0);
// this will generate a notice
echo $undefinedVar;
// this will generate a fatal error
callUndefFunc();
?>
表C中的代码将所有错误信息甚至简单的注意事项都显示出来:
表C
<?php
// all errors will be displayed
error_reporting(E_ALL);
// this will generate a notice
echo $undefinedVar;
// this will generate a fatal error
callUndefFunc();
?>
如以上3个例子所示,error_reporting()函数在控制错误发生时,在屏幕上显示内容非常重要。这里的关键字是displayed,其表达的意思是错误不被显示而不是错误没有发生。因此,发生致命错误时(例如不正确的函数调用),程序将被终止;但是,此时没有任何消息显示给用户。
下面的例子(表 D)说明了这种情况:
表D
<?php
// no errors will be displayed
error_reporting(0);
// start a task
echo "Starting task...";
// call an undefined function
// a fatal error occurs ring task processing
callMe();
// end the task
echo "Successfully completed task...";
?>
在表D中,在调用echo()函数时发生了致命错误,程序执行时到这点被终止,但是却没有任何错误消息给出,用户不知道这种情况还以为程序在正确运行。下面的结论是非常明显的:不给出错误报告非常危险,因为不论过程是否完成它常导致不正确的结论。
注意:调用不带任何参数的error_reporting()将返回当前的错误报告等级。
自定义错误处理器
很明显,隐藏错误报告是不正确的,你肯定想知道有什么其他办法加以改进。自定义错误处理器就是一个很好的能取代PHP默认错误处理系统的解决方法。自定义错误处理器可以以任何方式设置处理错误信息,包括信息如何显示。
PHP函数中,完成这一功能的是set_error_handler()函数。错误发生时,此函数被自动调用,然后给出4个参数:错误代码、错误消息、发生错误的脚本名称和错误出现的行,此函数对错误管理负责。
表E给出一个简单例子:
表E
<?php
// define custom handler
set_error_handler('myHandler');
// custom handler code
function myHandler($code, $msg, $file, $line) {
echo "Just so you know, something went wrong at line $line of your script $file. The system says that the error code was $code, and the reason for the error was: $msg. Sorry about this!";
}
// generate a notice
echo $undefVar;
?>
当运行此脚本的时候,会出现下面的信息:
Just so you know, something went wrong at line 11 of your /dev/error1.php. The system says that the error code was 8, and the reason for the error was: Undefined variable: undefVar. Sorry about this!
此时,PHP的默认错误处理器被用户定义的myHandler()函数所取代,$undefVar变量被激活,PHP通知未定义变量的信息,此信息在运行时引擎产生,然后传递给myHandler()函数,同时错误发生的地址也传递给此函数。然后myHandler()函数输出友好信息解释错误。
注意:错误和致命错误很重要,它们会绕过自定义错误处理器,然后以PHP默认的错误处理机制进行显示。显示这些信息可使用前面讨论的标准error_reporting()函数进行控制。
例1:动态错误页面和e-mail警报
表F给出了另一个范例,当发生错误时,将动态产生HTML错误页面,并且通过e-mail向Web管理员进行报告。
表F
<?php
// define custom handler
set_error_handler('myHandler');
// custom handler code
function myHandler($code, $msg, $file, $line, $context) {
// print error page
echo "<html><head></head><body>";
echo "<h2 align=center>Error!</h2>";
echo "<font color=red size=+1>";
echo "An error occurred while processing your request. Please visit our <a href=http://www.domain.dom>home page</a> and try again.";
echo "</font>";
echo "</body></html>";
// email error to admin
$body = "$msg at $file ($line), timed at " . date ("d-M-Y h:i:s", mktime());
$body .= "nn" . print_r($context, TRUE);
mail ("[email protected]", "Web site error", $body);
// halt execution of script
die();
}
// generate a notice
echo $undefVar;
?>
这里,自定义的错误处理器在遇到错误时动态产生HTML错误页面。此错误信息也能被e-mail信息捕获,然后通过PHP内置的mail()函数发送给管理员。
这里出现了myHandler()函数的一个新参数$context。这是myHandler()函数的第五个参数,是可选项。它包含了当前变量状态的快照。包括对管理员有用的上下文信息,有利于减少调试时间。

㈦ php 可否捕获Fatal error(致命错误),并且让程序继续往下走。

既然是Fatal error,不应该再继续执行,这是惯例

㈧ php 如何捕获类似于Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRIN 的错误信息

要先理解一个概念:
你要用PHP显示信息,你得保证你这个PHP能正常运行,你这种语法错误的,PHP解释器都无法运行,怎么给你显示友好的自定义错误。。。。。
不过如果是运行时错误你可以用如下办法:
<?php
error_reporting(0);
header( 'Content-type:text/html;charset=utf-8' );
//错误记录
function error_notice($err_no, $err_str, $err_file, $err_line)
{
echo '文件' . $err_file . '第' . $err_line . '行发生错误(' . $err_no . '):' . $err_str;
}
set_error_handler( "error_notice", ~E_NOTICE & ~E_STRICT );
foreach( $arr as $a ){}

?>

㈨ php中怎么捕获数据库连接错误语句

修改php.ini中的错误显示级别,不显示Warning即可。

热点内容
androidurl判断 发布:2025-05-20 13:50:11 浏览:257
共享文件夹没有启动服务器服务 发布:2025-05-20 13:43:38 浏览:803
天龙八部游戏怎么切换服务器 发布:2025-05-20 13:42:36 浏览:630
亚马逊免费主机是什么配置 发布:2025-05-20 13:40:10 浏览:695
存储类型默认分配 发布:2025-05-20 13:32:26 浏览:662
qq信息加密 发布:2025-05-20 13:31:32 浏览:341
文件夹嗅探器foldersniffer 发布:2025-05-20 12:33:36 浏览:912
编译装入 发布:2025-05-20 12:32:48 浏览:562
万胜压缩机价格 发布:2025-05-20 12:20:00 浏览:987
判断云服务器是否诚实的存放数据 发布:2025-05-20 12:11:07 浏览:377