这是如何将值(下面示例中的“用户名”)传递给自定义异常的?问题是我会使用__construct()
吗?是否使用自定义异常来检查重要变量是否设置为过度杀伤?
class customException extends Exception {
public function __construct($e) {
parent::__construct($e); // makes sure variable is set? [1]
$this->e = $e;
}
public function redirect_user() {
if($this->e === "username") {
header("Location: ");
}
}
}
class testing {
public function test() {
try {
if(!isset($_POST['username'])) {
throw new customException("username");
}
}
catch(customException $e) {
$e->redirect_user();
}
}
}
[1] http://php.net/manual/en/language.exceptions.extending.php#example-266
另一方面,parent::__construct($e)
的目的是什么?这不是多余的吗?
答案 0 :(得分:0)
你的构造函数根本没有理由。我建议您使用$this->getMessage()
来访问您要设置为$this->e
的值。
所以做这样的事情:
class customException extends Exception {
public function redirect_user() {
if($this->getMessage() === "username") {
print_r("Header");
}
}
}
它更直接,只扩展了基类的功能,而不是不必要地覆盖了构造函数。
话虽如此,我个人并不喜欢使用异常来执行应用程序流逻辑,就像你正在做的那样。对我来说,自定义异常对于与自定义日志记录系统的接口很有用,或者能够记录通过默认Exception类不可用的应用程序状态的各个方面。