Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php set\u异常处理程序是否要替换set\u错误处理程序?_Php - Fatal编程技术网

Php set\u异常处理程序是否要替换set\u错误处理程序?

Php set\u异常处理程序是否要替换set\u错误处理程序?,php,Php,根据: 内部PHP函数主要使用错误报告,只有现代面向对象扩展使用异常。但是,错误可以简单地转换为带有ErrorException的异常 ErrorException中提供的示例: <?php function exception_error_handler($errno, $errstr, $errfile, $errline ) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } set_er

根据: 内部PHP函数主要使用错误报告,只有现代面向对象扩展使用异常。但是,错误可以简单地转换为带有ErrorException的异常

ErrorException中提供的示例:

<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

简短回答:不。这是两种不同的功能

长句回答:它不是要取代,而是要利用。用于异常和错误。那是两双不同的鞋

另见:


否,任何未捕获的异常都会导致致命错误。如果您想优雅地响应catch块中未捕获的异常,则需要将函数设置为默认异常处理程序。 为此,可以使用set\u exception\u handler()函数,该函数接受一个可调用的参数。您的脚本将在执行callable后终止。
函数restore\u exception\u handler()将异常处理程序还原为其以前的值。

中的Kris的答案/示例与我的示例类似。他似乎还将错误和异常合并到一个异常处理程序中,因此“替换”了错误报告的经典行为?是的,这可以通过使用内置的
ErrorException
类来实现,请参见PHP手册中的示例。注意,许多错误与异常都是主观的。您需要为您的代码/应用程序决定要遵循/混合/使用的方法。我回答的关键点是,这两个函数是两种类型的工具,两双鞋,但都用于行走(这里错误和异常处理是在同一个域中)。所以我想使用异常作为处理异常和错误的机制是完全安全的,与其对错误使用不同的处理程序,对异常使用不同的处理程序,不如对一些错误进行特殊处理,据我所知,这些错误在异常情况下是不可能的,并且是可捕获的致命错误。然而,如果你亲自问我,我通常更喜欢异常驱动编程而不是错误处理,因为你不能绕过异常;)所以代码通常更严格。真烦人。我讨厌php。它们甚至不提供包含错误和异常的通用抽象。