1

我想知道使用 InvalidArgumentException 而不是 Exception 有什么好处?是为了提高代码的可读性还是有其他原因?

public function setShortName($shortName){
    $shortName = (string) $shortName;
    if (strlen( $shortName ) == 2) {
        $this->_shortName = (string) $shortName;
    } else {
        throw new InvalidArgumentException( "Ülke kısa ismi 2 karakterden oluşmak zorundadır", 115003 );
    }
}

或者

public function setShortName($shortName){
    $shortName = (string) $shortName;
    if (strlen( $shortName ) == 2) {
        $this->_shortName = (string) $shortName;
    } else {
        throw new Exception( "Ülke kısa ismi 2 karakterden oluşmak zorundadır", 115003 );
    }
}
4

1 回答 1

8

这是为了更好的可读性/调试和处理正确的代码块,例如在 try-catch 块中......

try {
  // some code with potential exception throwing block
} catch(InvalidArgumentException $ex) {
  // handling InvalidArgumentException
} catch(AnotherException $ex) {
  // handling AnotherException
} catch(Exception $ex) {
  // handling Exception
} finally {
  // always-processed code
}

请注意,异常具有基于树的结构,因此处理取决于它们的顺序!(从最低到根)

在此处输入图像描述

更多信息:http ://docs.oracle.com/javase/7/docs/api/java/lang/package-tree.html

于 2012-11-15T11:59:21.310 回答