Non vedo molta differenza tra le preoccupazioni relative alla gestione delle eccezioni e al logging in quanto entrambe sono preoccupazioni trasversali. Cosa pensi? Non dovrebbe essere gestito separatamente da solo piuttosto che essere interlacciato con la logica di base che sta implementando un metodo?
EDIT : Quello che sto cercando di dire è che, a mio parere, l'implementazione di un metodo dovrebbe contenere solo la logica per il corretto percorso di esecuzione e le eccezioni dovrebbero essere gestite altrove. Non si tratta di eccezioni controllate / non selezionate.
Ad esempio, una lingua può gestire le eccezioni in modo completamente controllato usando costrutti come questo:
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
}
}
}
Nel linguaggio concettuale di cui sopra, il programma non compilerà in assenza di FileReader
gestore , perché il file di lettura FileReader
classe non sta lanciando l'eccezione. Quindi, dichiarando il FileReader
handler , il compilatore può garantire che sia gestito e il programma quindi compila.
In questo modo abbiamo il meglio di entrambi i problemi di eccezione verificati e non controllati: robustezza e leggibilità.