Mi è stato detto che c'è un sovraccarico nell'uso del meccanismo di try-catch di Java. Quindi, mentre è necessario mettere i metodi che generano un'eccezione controllata all'interno di un blocco try per gestire la possibile eccezione, è buona norma limitare le dimensioni del blocco try a contenere solo le operazioni che potrebbero generare eccezioni.I blocchi di prova java devono essere esaminati il più strettamente possibile?
Non sono sicuro che questa sia una conclusione ragionevole.
Considerare le due implementazioni seguenti di una funzione che elabora un file di testo specificato.
Anche se è vero che il primo causa un sovraccarico non necessario, trovo molto più facile da seguire. È meno chiaro dove esattamente le eccezioni provengono solo dal guardare le dichiarazioni, ma i commenti mostrano chiaramente quali dichiarazioni sono responsabili.
Il secondo è molto più lungo e complicato del primo. In particolare, il bel linguaggio di lettura della prima riga deve essere stroncato per adattarsi alla chiamata readLine
in un blocco try.
Qual è la procedura migliore per gestire le eccezioni in una funzione in cui possono essere generate più eccezioni nella sua definizione?
Questo contiene tutto il codice di elaborazione all'interno del blocco try:
void processFile(File f)
{
try
{
// construction of FileReader can throw FileNotFoundException
BufferedReader in = new BufferedReader(new FileReader(f));
// call of readLine can throw IOException
String line;
while ((line = in.readLine()) != null)
{
process(line);
}
}
catch (FileNotFoundException ex)
{
handle(ex);
}
catch (IOException ex)
{
handle(ex);
}
}
Questo contiene solo i metodi che producono eccezioni all'interno di blocchi try:
void processFile(File f)
{
FileReader reader;
try
{
reader = new FileReader(f);
}
catch (FileNotFoundException ex)
{
handle(ex);
return;
}
BufferedReader in = new BufferedReader(reader);
String line;
while (true)
{
try
{
line = in.readLine();
}
catch (IOException ex)
{
handle(ex);
break;
}
if (line == null)
{
break;
}
process(line);
}
}
"Ottimizzazione prematura" è una frase utilizzata per descrivere una situazione in cui un programmatore consente alle considerazioni sulle prestazioni di influenzare la progettazione di un pezzo di codice. Ciò può comportare un design che non è pulito come avrebbe potuto essere o un codice non corretto, perché il codice è complicato dall'ottimizzazione e il programmatore è distratto dall'ottimizzazione. - Wikipedia [http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize] –
"Dovremmo dimenticare le piccole efficienze, diciamo circa il 97% delle volte: l'ottimizzazione prematura è la radice di tutto il male. le nostre opportunità in quel 3% critico ". - Knuth [http://stackoverflow.com/questions/211414/is-premature-optimization-really-the-root-of-all-evil] –