2011-02-12 138 views
3

这种方法好吗?我是否正确处理异常?见我的课:在这种情况下,我应该重新抛出异常吗?

class Email extends String 
{ 
protected function validate($email) 
{ 
    try{ 
     parent::validate($email); 
    } catch(InvalidArgumentException $e) { 
     throw $e; 
    } 

    if(!filter_var($value,FILTER_VALIDATE_EMAIL)) 
    { 
     throw new InvalidArgumentException('etc.'); 
    } 
} 
} 
+1

'Email`类扩展`String`类? – Jon 2011-02-12 19:18:13

+0

@Jon:这是一个奇怪的超类名称,但它是合法的:PHP中没有内置的`String`类。 – BoltClock 2011-02-12 19:18:52

回答

11

如果你不打算与catch块中的异常做任何事情,这是没有必要封闭在自己的try-catch块是父类的方法调用。该方法将自动从父的实现了通过异常,如果遇到一个try-catch块之外,就像如果你把来自同一背景下的异常(如你以后做你的,如果条件):

protected function validate($email) 
{ 
    parent::validate($email); 

    if (!filter_var($value, FILTER_VALIDATE_EMAIL)) 
    { 
     throw new InvalidArgumentException('etc.'); 
    } 
} 
相关问题