throws Exception
Deklarasyon beklenen fakat kaçınılmaz nedenlerle bir özel durum yöntemlerin tam tutmanın otomatik yoludur. Bildirim, tipik olarak throws IOException
veya gibi atılabilecek istisnaların türü veya türleri hakkında spesifiktir throws IOException, MyException
.
Hepimiz, sıfıra bölme veya sınırların dışında indeks gibi, programı çalıştırmadan önce tahmin etmediğimiz bir şey nedeniyle beklenmedik şekilde duran ve bir istisna bildiren bir kod yazıyoruz veya yazacağız. Hatalar yöntem tarafından beklenmediğinden, bunlar "yakalanamadı" ve bir try catch cümlesiyle ele alınamadı. Yöntemin herhangi bir şüpheli kullanıcısı da bu olasılığı bilmez ve programları da durur.
Programcı belirli hata türlerinin ortaya çıkabileceğini bildiğinde, ancak bu istisnaları yöntemin dışında ele almak istediğinde, yöntem bunları işlemek yerine çağıran yönteme bir veya daha fazla istisna türü "atabilir". Programcı, yöntemin bir istisna atabileceğini (veya Java'nın bunu bildirme yeteneğine sahip olmadığını) beyan etmediyse (veya Java'nın bunu bildirme yeteneği yoksa), derleyici bunu bilemezdi ve bu, yöntemin gelecekteki kullanıcısına kalır, yöntemin ortaya çıkardığı istisnaları yakalar ve işler. Programlar, birçok farklı program tarafından yazılan birçok yöntem katmanına sahip olabileceğinden, hangi yöntemlerin istisna oluşturabileceğini izlemek zor (imkansız) hale gelir.
Java, istisnaları bildirme yeteneğine sahip olsa da, işlenmemiş ve bildirilmemiş istisnalarla yeni bir yöntem yazabilirsiniz ve Java onu derler ve çalıştırıp en iyisini umabilirsiniz. Java'nın yapmanıza izin vermeyeceği şey, yönteminizde bildirilen istisnaları işlemediğiniz veya yönteminizin aynı şeyi fırlattığını bildirmediğiniz sürece, istisna (ler) olarak bildirilmiş bir yöntemi kullanıyorsa yeni yönteminizi derlemektir istisna (lar) veya birden fazla istisna varsa, bazılarını halledebilir ve gerisini atabilirsiniz.
Bir programcı, yöntemin belirli bir istisna türü attığını bildirdiğinde, bu, diğer programcıları yöntemi kullanarak bir istisnanın mümkün olduğu konusunda uyarmanın otomatik bir yoludur. Programcı daha sonra istisnayı işlemeye karar verebilir veya çağıran yöntemi aynı istisnayı atmış gibi bildirerek uyarıyı iletebilir. Derleyici uyarıldığından, bu yeni yöntemde istisna olasıdır, yeni yöntemin gelecekteki çağırıcılarının istisnayı işleyip işlemediğini veya bildirip birinin veya diğerinin gerçekleşmesini zorunlu kılıp kılmadığını otomatik olarak kontrol edebilir.
Bu tür bir çözümle ilgili güzel olan şey, derleyici rapor Error: Unhandled exception type java.io.IOException
ettiğinde, istisnayı atmak için bildirilen yöntemin dosya ve satır numarasını vermesidir. Daha sonra basitçe parayı geçmeyi seçebilir ve yönteminizi "IOException oluşturur" olarak da bildirebilirsiniz. Bu, programın durmasına ve istisnayı kullanıcıya bildirmesine neden olacağı ana yönteme kadar yapılabilir. Ancak, istisnayı yakalamak ve kullanıcıya ne olduğunu ve nasıl düzeltileceğini açıklamak gibi güzel bir yolla başa çıkmak daha iyidir. Bir yöntem istisnayı yakalayıp işlediğinde, artık istisnayı bildirmesi gerekmez. Kova tabiri caizse orada durur.