次のようなメソッドを持つクラスがあるとします。
/*
*
* Loads the user from username.
*
* @param string $username The username
*
* @return UserInterface
*
* @throws userNotFoundException if the user is not found
*/
public function getUser($username)
{
// someFunction return an UserInterface class if found, or null if not.
$user = someFunction('SELECT ....', $username);
if ($user === null) {
throw new userNotFoundException();
}
return $user
}
ここで、XYZ の理由で/ /をsomeFunction
スローできるとしましょう。私は何をすべきか?そして、そうではありませんか?InvalidArgumentException
RuntimeException
PDOException
ナンバー1
someFunction
php-docs でスローされる可能性のあるすべての例外を追加します。
/*
*
* Loads the user from username.
*
* @param string $username The username
*
* @return UserInterface
*
* @throws userNotFoundException if the user is not found
* @throws InvalidArgumentException
* @throws ...
*/
2番
メソッドが例外をスローするように try-catch ブロックを追加します。
/*
*
* Loads the user from username.
*
* @param string $username The username
*
* @return UserInterface
*
* @throws userNotFoundException if the user is not found
* @throws RuntimeException
*/
public function getUser($username)
{
try {
$user = someFunction('SELECT ....', $username);
} catch (Exception $e) {
throw new RuntimeException();
}
if ($user === null) {
throw new userNotFoundException();
}
return $user
}
ナンバー 3
何もしないでください。