"Ah. İşte buradasın. Seni arıyordum."

"Bir şey mi oldu?"

"Hayır, ama hala çalışıyoruz."

"Tamam. Dinliyorum."

"Size istisnalar hakkında birkaç şey daha söylemek istiyorum:"

"Java 7'de, try-catch yapısı, birden çok catch bloğunun eklenmesiyle biraz genişletildi . Şu örneğe bakın:"

java 5
try
{}
 catch (IOException ex)
{
 logger.log(ex);
 throw ex;
}
 catch (SQLException ex)
{
 logger.log(ex);
 throw ex;
}
Java 7
try
{}
 catch (IOException | SQLException ex)
{
 logger.log(ex);
 throw ex;
}

"Öyleyse artık VEYA işleçleriyle ayrılmış birden fazla istisna yazabilir miyiz ('|' ikili VEYA'dır)?"

"Doğru. Bu uygun değil mi?"

"Hmm. Ama catch bloğunun içindeki istisna nesnesinin türü ne olacak?"

"Sonuçta, bir IOException'ın kendi yöntemleri vardır ve bir SQLException'ın da kendi yöntemleri vardır."

"İstisna türü, ortak ata sınıfının türü olacaktır."

"Ah. Başka bir deyişle, büyük olasılıkla Exeption veya RuntimeException olacaktır . O zaman neden sadece catch(Exception e) yazmıyorsunuz?"

"Bazen hataları tek tek ele alırken, bunları gruplandırmak, bazı hataları bir günlüğe yazmak, diğerlerini yeniden atmak ve diğerlerini başka bir şekilde ele almak uygundur."

"Başka bir deyişle, bu şemanın, farklı hataları işlemek için yinelenen yakalama blokları sorununu çözdüğü kabul edilmektedir."

"Ah. Anladım. Sağ ol Ellie."

"Hepsi bu kadar değil. Size nihayet blok hakkında biraz daha bilgi vermek istiyorum ."

"Muhtemelen zaten bildiğiniz gibi, bu blok her zaman yürütülür."

"Ve her zaman dediğimde, kesinlikle her zaman demek istiyorum ."

"Örneğin:"

Nihayet kullanan örnek
try
{
 return 1;
}
 finally
{
 return 0;
}

"Burada try bloğunda bir dönüş var , ve finally bloğunda bir dönüş var . Yani bu yöntemin dönüş değeri 0 olacak."

" Sonunda blok, ne olursa olsun yürütülür. Ve dönüş ifadesi, diğer dönüş değerinin üzerine kendi değerini yazar."

"Anlıyorum."

"Ancak, bir yöntem bir değer döndürebilir veya bir istisna atabilir. "

"Yani, bir try bloğunda bir değer döndürülürse, ancak finally bloğu bir istisna atarsa , sonuç bir istisna olacaktır . "

"Ya try bloğunda bir istisna atılırsa, ancak finally bloğunun bir dönüş ifadesi varsa?"

"O zaman sanki yöntem düzgün çalıştı ve dönüş ifadesindeki değer döndürüldü.

Örnek Sonuç
try
{
 return 1;
}
 finally
{
 return 0;
}
0
try
{
 return 1;
}
 finally
{
 throw new RuntimeException();
}
Çalışma zamanı istisnası
try
{
 throw new RuntimeException();
}
 finally
{
 return 0;
}
0
try
{
 throw new RuntimeException();
}
 finally
{
 throw new IOException();
}
IO İstisnası

"Falls yönteminin yürütülmemesinin tek nedeni, programın System.exit (); yöntemine yapılan bir çağrıyla derhal sonlandırılması olabilir."

Örnek
try
{
 System.exit(0);
 return 1;
}
 finally
{
 return 0;
}

"Anlıyorum."

"Bu konuların hepsinin genellikle röportajlarda sorulduğunu unutmayın, bu nedenle bunları anlamanız ve hatırlamanız iyi olur."