我有一个有异常的类,如果没有在类外捕获异常,我想要一个默认的异常。
以下是一些代码:
<?php
Class Test
{
public $file;
public function setFile($file)
{
$this->file = $file;
}
public function getFile()
{
return $this->file;
}
public function test()
{
try
{
return $this->getFile();
if($this->getFile() == "test")
{
throw new TestException("The variable is test!");
}
}
catch (TestException $e)
{
return "Default exception message: " . $e->getMessage();
}
}
}
class TestException extends \Exception
{
public function __construct($message)
{
parent::__construct($message);
}
}
$t = new Test;
$t->setFile('test');
try {
echo $t->test();
}
catch(TestException $e) {
//this wont do anything
return "I want to overwrite exception here... " . $e->getMessage();
}
此外,不使用带有catch的try块只会抛出未捕获的异常错误。
那么有没有办法覆盖处理?最明显的方法是在类中抛出一个错误,删除try块,并在类之外捕获异常,但我想知道是否有一种方法可以覆盖。
答案 0 :(得分:1)
如果你想要我想你想要的东西。一种解决方案是使用set_exception_handler:http://php.net/manual/en/function.set-exception-handler.php。
这意味着你可以删除try-catch块,任何未捕获的异常都将在你给set_exception_handler()的函数中结束。
虽然异常处理程序没有范围,但这将是应用程序范围的行为。
答案 1 :(得分:0)
如果传递一些额外的参数,你可以说函数不会捕获Eexception。
Engine