Powiedziano mi, że jest pewien narzut w korzystaniu z mechanizmu próbnego Java. Tak więc, chociaż konieczne jest umieszczenie metod, które rzucają zaznaczony wyjątek w bloku try, aby obsłużyć ewentualny wyjątek, dobrą praktyką jest ograniczenie rozmiaru bloku try, aby zawierał tylko te operacje, które mogą zgłaszać wyjątki.Czy java powinien wypróbowywać bloki tak ściśle, jak to możliwe?
Nie jestem pewien, czy to rozsądny wniosek.
Rozważ dwie poniższe implementacje funkcji przetwarzającej określony plik tekstowy.
Nawet jeśli prawdą jest, że pierwszy z nich powoduje pewne niepotrzebne obciążenie, o wiele łatwiej jest go śledzić. Mniej jasne jest, gdzie dokładnie wyjątki pochodzą z samego spojrzenia na stwierdzenia, ale komentarze wyraźnie pokazują, które oświadczenia są odpowiedzialne.
Druga jest znacznie dłuższa i bardziej skomplikowana niż pierwsza. W szczególności, ładny line-czytanie idiom z pierwszych ma być zniekształcone, aby pasowały do readLine
wezwanie do bloku try.
Co to jest najlepsze praktyki do obsługi wyjątków w funcion gdzie wiele wyjątków może być rzucony w jej definicji?
Ten jeden zawiera cały kod przetwarzanie wewnątrz bloku 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);
}
}
Ten jeden zawiera tylko metody, które generują wyjątki w blokach 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);
}
}
"Przedwczesna optymalizacja" to wyrażenie używane do opisania sytuacji, w której programista uwzględnia aspekty związane z wydajnością, wpływające na projekt fragmentu kodu. Może to spowodować, że projekt nie będzie tak czysty, jak mógłby być, lub kod jest niepoprawny, ponieważ kod jest skomplikowany przez optymalizację, a programista jest rozproszony przez optymalizację. - Wikipedia [http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize] –
"Powinniśmy zapomnieć o małych wydajnościach, powiedzmy o 97% przypadków: przedwczesna optymalizacja jest źródłem wszelkiego zła. nasze możliwości w tym krytycznym 3%. " - Knuth [http://stackoverflow.com/questions/211414/is-premature-optimization-really-the-roof-all-evil] –