現在、私のサインアップは次のようになります。最初のために可能な(チェックされていない)すべての例外を適切に処理していますか?
public void signup(User newUser) throws Exception {
log.info("Sign up: " + newUser.getEmail());
if (restService.emailAlreadyExists(newUser.getEmail())) {
throw new Exception("Email already in use.");
}
List<Role> roles = new ArrayList<Role>();
roles = roleRepository.findAllOrderedByName();
roles.add(roleRepository.findByName("user"));
newUser.setRoles(roles);
newUser.setPassword(restService.getHashedValue(newUser.getPassword()));
try {
em.persist(newUser);
} catch (Exception e) {
throw new Exception("Just noobs use apps with less bugs. Try again. Now!");
}
log.info(newUser.toString());
userEvent.fire(newUser);
}
私は、ユーザーのために(FacesMessage
になります)2つのメッセージにだけ興味があります。ユーザーの他の隠れたメッセージを防ぐために、私はさらにtry
ブロックを役割まで拡張する必要があります。
これは悪い習慣だと思います。また、一般的なException
のにおいを使用して、彼らは言う。しかし:
IllegalStateException
IllegalArgumentException
EntityExistsException
TransactionRequiredException
ObserverException
でも8については話していない:私は、このコードの小片でException
秒を記録し、次の検出(!)Exception
s方法のgetSingleResult()
はjavax.persistence.TypedQuery
である。
この例ではすべてException
を実際に処理する必要がありますか、またはいくつかをスキップしてもかまいません(および/または上記のような一般的なException
を使用することもできます)。
あなた自身に尋ねるべきことは、あなたがそれらをすべて扱うべきかどうかです。多くのUncheckedExceptionsは、システムが回復できないエラーを表します。だから、あなたはUIをブロックせずにユーザを悩ますことなく、これをどのように扱うのだろうか?それらのいくつかは処理することができますが、ユーザーやシステムが問題を解決するために何もできない場合は、どうしますか? – Stultuske
また、バックエンドを書いてみましょう。 UIが例外でどのように対応するのか知っていますか?時々、例外を伝播することは、あなたが何をすべきかを知っていると仮定することよりも優れています。 – Stultuske
http://stackoverflow.com/questions/2416316/why-is-the-catchexception-almost-always-a-bad-idea – Raedwald