Nie widzę dużej różnicy między obawami związanymi z obsługą wyjątków i logowaniem, że oba są problemami przekrojowymi. Co myślisz? Czy nie powinien być traktowany osobno, zamiast przeplatać się z podstawową logiką, którą implementuje metoda?
EDYCJA : Próbuję powiedzieć, że moim zdaniem implementacja metody powinna zawierać tylko logikę udanej ścieżki wykonania, a wyjątki powinny być obsługiwane gdzie indziej. Nie chodzi o sprawdzone / niezaznaczone wyjątki.
Na przykład język może obsługiwać wyjątki w sposób w pełni sprawdzony przy użyciu takich konstrukcji:
class FileReader {
public String readFile(String path) {
// implement the reading logic, avoid exception handling
}
}
handler FileReader {
handle String readFile(String path) {
when (IOException joe) {
// somehow access the FileInputStram and close it
}
}
}
W powyższym języku koncepcyjnym program nie będzie się kompilował przy braku modułu FileReader
obsługi , ponieważ readFile FileReader
klasy nie zgłasza wyjątku. Deklarując FileReader
moduł obsługi , kompilator może zapewnić, że jest on obsługiwany, a następnie program się skompiluje.
W ten sposób mamy najlepsze z sprawdzonych i niezaznaczonych problemów wyjątków: niezawodność i czytelność.