通过类传递异常时未捕获的异常

时间:2018-03-20 20:58:03

标签: php class oop exception

我有一个名为用户的类,在构建时,在try / catch块中调用自己的方法之一 setUsername()。如果 setUsername()失败,则会抛出异常:

class User {
    private $username;

    public function __construct($input_username) {
        try {
            $this->setUsername($input_username);
        } catch(Exception $e) {
            throw $e;
        }
    }

    private function setUsername($username) {
      if(1 != 0)
         throw new Exception("1 does not equal 0!!!");
      $this->username = $username;
    }

}

然后,我在一个外部函数中,在一个单独的文件中,在自己的try / catch块中创建一个新的 User 。它应该捕获从用户类构造函数传递的异常:

namespace UserController;

function createUser(){
    try {
        $user = new \User('sample-user');
    } catch(Exception $e) {
        echo $e->getMessage();
    }
}

那么,为什么我仍然得到一个" Uncaught Exception"错误?

1 个答案:

答案 0 :(得分:0)

我似乎错过了实例化该类的文件顶部的语句,因为它是命名空间的。在命名空间声明之后,需要说:

nueva_plantilla.archivo.save(nombre_archivo, File(open('media/temp/'+ nombre_archivo, 'rb')))