2011-02-12 137 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.'); 
    } 
} 
相關問題