覆盖PHP中的默认异常消息

时间:2015-04-28 15:30:59

标签: php

我有一个有异常的类,如果没有在类外捕获异常,我想要一个默认的异常。

以下是一些代码:

<?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块,并在类之外捕获异常,但我想知道是否有一种方法可以覆盖。

2 个答案:

答案 0 :(得分:1)

如果你想要我想你想要的东西。一种解决方案是使用set_exception_handler:http://php.net/manual/en/function.set-exception-handler.php

这意味着你可以删除try-catch块,任何未捕获的异常都将在你给set_exception_handler()的函数中结束。

虽然异常处理程序没有范围,但这将是应用程序范围的行为。

答案 1 :(得分:0)

如果传递一些额外的参数,你可以说函数不会捕获Eexception。

Engine