Não vejo muita diferença entre as preocupações de manipulação e log de exceções, pois ambas são preocupações transversais. O que você acha? Não deveria ser tratado separadamente por si só, em vez de intercalado com a lógica central que um método está implementando?
EDIT : O que estou tentando dizer é que, na minha opinião, a implementação de um método deve conter apenas a lógica para o caminho bem-sucedido da execução, e as exceções devem ser tratadas em outro lugar. Não se trata de exceções marcadas / desmarcadas.
Por exemplo, um idioma pode manipular exceções de uma maneira totalmente verificada usando construções como esta:
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
}
}
}
Na linguagem conceitual acima, o programa não será compilado na ausência de FileReader
manipulador , porque o readFile da FileReader
classe não está lançando a exceção. Portanto, declarando o FileReader
manipulador , o compilador pode garantir que ele está sendo manipulado e o programa compila.
Dessa forma, temos o melhor dos problemas de exceção verificados e não verificados: robustez e legibilidade.
fonte