1. throw
operatör
Bir blok tarafından bir istisna yakalandığında catch
ve Java makinesine atılana kadar, bu sadece miras alan Exception
(veya daha doğrusu Throwable
) bir nesnedir. İstisna nesnesinin kendisinin herhangi bir büyülü özelliği yoktur.
İstisnaların nasıl çalıştığına dair tüm mantık, Java makinesinin kendisine bir istisna fırlatıldığında davrandığı özel bir yoldur.
Yakalanan bir istisnayı her zaman Java makinesine yeniden gönderebilirsiniz. Bunu yapmak için operatörü kullanmanız gerekir throw
:
throw exception;
Örnek:
kod | Konsol çıkışı |
---|---|
|
|
Bu kodda bir istisna yakaladık, ekranda bununla ilgili bir mesaj görüntüledik ve ardından onu yeniden gönderdik.
catch
Yeniden atılan bir istisna, aynı bloktaki diğer bloklar tarafından yakalanamaz try
.
2. İstisnalarınız
Bu arada, kendiniz bir istisna nesnesi oluşturabilirsiniz: bu yalnızca türü Exception
veya onu miras alan bir sınıf olan bir nesnedir. Ve fırlat.
Göründüğünden daha kolay. Örnek:
kod | Konsol çıkışı |
---|---|
|
|
Yukarıdaki örnekte, türü olan yeni bir istisna nesnesi oluşturduk RuntimeException
ve işleci kullanarak onu hemen fırlattık throw
.
catch
RuntimeException miras aldığı için blok tarafından hemen yakalanacaktır Exception
. Kod catch (Exception except)
, sınıfı miras alan tüm sınıfların istisna nesnelerini yakalar Exception
.
3. finally
anahtar kelime
Bir başka önemli nokta. Bazen bir programcının, kodda bir istisna oluşup oluşmadığına bakılmaksızın bazı eylemler gerçekleştirmesi gerekir. Örneğin, yazmak için bir dosya açtığımızı varsayalım. Açılan dosya çağrılarak kapatılmalıdır close()
.
try
{
// Code where an exception might occur
}
catch(ExceptionType name)
{
// Exception handling code
}
finally
{
// Code that must executed no matter what happens
}
Bu zorunlu eylemleri gerçekleştirmek için yapıya başka türde bir blok ( finally
) eklendi try-catch
ve böylece yapı oluşturuldu try-catch-finally
. Şuna benziyor:
Örnek:
FileInputStream source = null;
try
{
source = new FileInputStream("c:\\note.txt");
source.read();
}
catch(Exception except)
{
System.out.println("Caught the exception");
throw except;
}
finally
{
if (source != null)
source.close();
}
finally
Bloktaki kod, bir istisna olup olmadığına bakılmaksızın her durumda yürütülür. Bir istisna atılsa ve yakalanmasa bile, finally
blok yine de yürütülür.
Bu arada, bir istisna yakalamak istemiyorsanız, ancak bir finally
bloğa ihtiyacınız varsa, yapı için kestirme gösterimi kullanın try-catch-finally
: a try-finally
blok. Şunun gibi görünüyor:
try
{
// Code where an exception might occur
}
finally
{
// Code that must executed no matter what happens
}
GO TO FULL VERSION