私は現在status
、操作の失敗を表す数値であるフィールドを返す WebService とやり取りするためのコード コードを書いています。、、、 の20 のstatus
値があります。コードに基づいてどのように例外を適切にスローしますか?10
11
12
20...37
20 個以上 CodeXXGatewayException
(コードはどこにありますか)を作成XX
するのは大変な作業のように思えますが、確かにきちんとした解決策ではありません。
class Code10GatewayException
{
public function __construct()
{
parent::__construct('Generic Error.', 10);
}
}
class Code11GatewayException
{
public function __construct()
{
parent::__construct('Invalid charset.', 11);
}
}
// Throw the exception
$class = "My\Exception\Client$statusException";
throw new $class;
の例外ファクトリはどう$reasonMap
ですか?(通常) 人々は大きなプロジェクトで多数の例外にどのように対処しますか?
class GatewayException extends \RuntimeException
{
public function __construct($code, $reason)
{
parent::__construct($reason, $code);
}
}
class ExceptionFactory
{
public static $reasonMap = array(
'10' => 'Generic error',
'11' => 'Invalid charset',
// ...
);
public static function fromStatus($status)
{
return new GatewayException($status, self::$reasonMap[$status] . '.');
}
}
// Throw the exception
throw new ExceptionFactory::fromStatus($status);