抛出异常时是否可以添加额外的参数?
当我抛出异常时,我发送错误消息,但我还想在额外的参数中发送字段的名称.就像是:
throw new Exception('this is an error message', 'the field');
Run Code Online (Sandbox Code Playgroud)
所以,当我显示消息时,我可以这样做:
show_error($e->getFieldname, $e->getMessage());
Run Code Online (Sandbox Code Playgroud)
Gor*_*don 26
不,您必须使用自己的实现将Exception子类化并添加该方法.
class FieldException extends Exception
{
protected $_field;
public function __construct($message="", $code=0 , Exception $previous=NULL, $field = NULL)
{
$this->_field = $field;
parent::__construct($message, $code, $previous);
}
public function getField()
{
return $this->_field;
}
}
Run Code Online (Sandbox Code Playgroud)
但实际上,我不是向Exceptions添加方法或属性的朋友.Exception代表的是:在您的应用程序中发生的异常情况."field"属性实际上不是Exception的一部分,而是异常消息的一部分,所以我可能会使用如下正确的消息:
字段foo的错误值.异常的字符串,得到整数
无需添加额外的参数。
你可以像这样抛出一个异常:
throw new Exception("My Exception Text", 1234);
Run Code Online (Sandbox Code Playgroud)
并访问这两个值:
catch (Throwable $t)
{
echo var_dump($t);
echo "Exception: " . $t->getMessage();
echo "Code: " . $t->getCode();
}
Run Code Online (Sandbox Code Playgroud)