在 Php 中,我希望我的异常不可变:
readonly class MyImmutableException extends \Exception
{
}
如您所见,这是不可能的,它会导致致命错误,因为 \Exception 不是不可变的。 但我想让我的所有系统都不可改变,所以很糟糕
你按照你尝试的方式去做。它是设计的一部分,在只读类的 RFC 的“继承”部分中提到过:
与重写只读属性的工作原理类似,只读类只能扩展只读父级。所以你要么继承
\Exception
,要么拥有只读类。请注意,您可能不需要扩展异常 - 创建自己的只读基类可能就足够了,只要它实现
\Throwable
接口,就可以了。