Czy bloki catch powinny być używane do zapisywania logiki, tj. Obsługi kontroli przepływu itp.? A może po prostu rzucać wyjątki? Czy wpływa to na wydajność lub łatwość konserwacji kodu?
Jakie są skutki uboczne (jeśli występują) logiki pisania w bloku catch?
EDYTOWAĆ:
Widziałem klasę Java SDK, w której zapisali logikę w bloku catch. Na przykład (fragment kodu pobrany z java.lang.Integer
klasy):
try {
result = Integer.valueOf(nm.substring(index), radix);
result = negative ? new Integer(-result.intValue()) : result;
} catch (NumberFormatException e) {
String constant = negative ? new String("-" + nm.substring(index))
: nm.substring(index);
result = Integer.valueOf(constant, radix);
}
EDYCJA 2 :
Przechodziłem samouczek, w którym liczą to jako zaletę pisania logiki wyjątkowych przypadków w wyjątkach:
Wyjątki pozwalają napisać główny przepływ kodu i poradzić sobie z wyjątkowymi przypadkami gdzie indziej.
Jakieś konkretne wskazówki, kiedy pisać logikę w bloku catch, a kiedy nie?