何时使用 trigger_error() 与 throw new Error()?
When to use trigger_error() vs throw new Error()?
我 throw new Exception
当我可以 catch
失败并采取一些措施时。如果我对此无能为力,那么我就 trigger_error()
.
现在 PHP 7 中有一些新内容:throw new Error
。
例如,
if (!mail(...))
throw new Error('...');
或
if (!mail(...))
trigger_error('...');
如果我不想 catch
错误或在 mail()
失败的情况下做某事,我应该使用 throw new Error()
还是简单的旧 trigger_error()
?
我们应该使用哪些实例 throw new Error()
与简单的 trigger_error()
?
正如您已经提到的,\Error
class 是在 PHP 7.
中引入的
它的行为完全像一个异常,因为它实现了 Throwable
。
它还属于以下class:
ArithmeticError
DivisionByZeroError
AssertionError
ParseError
TypeError
ArgumentCountError
然而,它的行为不像 trigger_error()
,事实上它的行为完全像一个异常(主要是因为它是一个异常)。
如果你trigger_error()
你就抓不到它,因为它不是一个例外。虽然有are workarounds.
这主要是我的猜测。
我假设这是为了更清楚地分离错误和异常,未来的计划可能包括弃用 trigger_error
并仅保留 Error
。
回答你的问题。
我会坚持 throwing
而不是 trigger_error
。它是可捕获的,它是面向对象的。
我 throw new Exception
当我可以 catch
失败并采取一些措施时。如果我对此无能为力,那么我就 trigger_error()
.
现在 PHP 7 中有一些新内容:throw new Error
。
例如,
if (!mail(...))
throw new Error('...');
或
if (!mail(...))
trigger_error('...');
如果我不想 catch
错误或在 mail()
失败的情况下做某事,我应该使用 throw new Error()
还是简单的旧 trigger_error()
?
我们应该使用哪些实例 throw new Error()
与简单的 trigger_error()
?
正如您已经提到的,\Error
class 是在 PHP 7.
它的行为完全像一个异常,因为它实现了 Throwable
。
它还属于以下class:
ArithmeticError
DivisionByZeroError
AssertionError
ParseError
TypeError
ArgumentCountError
然而,它的行为不像 trigger_error()
,事实上它的行为完全像一个异常(主要是因为它是一个异常)。
如果你trigger_error()
你就抓不到它,因为它不是一个例外。虽然有are workarounds.
这主要是我的猜测。
我假设这是为了更清楚地分离错误和异常,未来的计划可能包括弃用 trigger_error
并仅保留 Error
。
回答你的问题。
我会坚持 throwing
而不是 trigger_error
。它是可捕获的,它是面向对象的。