Programlama Hataları – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Programlama Hataları
Programlama hatalarını belirtmek için çalışma zamanı istisnalarını kullanın. Çalışma zamanı istisnalarının büyük çoğunluğu önkoşul ihlallerini gösterir. Bir önkoşul ihlali, bir API istemcisinin API spesifikasyonu tarafından oluşturulan sözleşmeye uymamasıdır.
Örneğin, dizi erişimi sözleşmesi, dizi dizininin sıfır ile dizi uzunluğu eksi bir arasında olması gerektiğini belirtir. ArrayIndexOutOfBoundsException, bu ön koşulun ihlal edildiğini gösterir.
JLS bunu gerektirmese de, hataların kaynak eksikliklerini, değişmez hataları veya yürütmeye devam etmeyi imkansız kılan diğer koşulları belirtmek için JVM tarafından kullanılmak üzere ayrıldığına dair güçlü bir kural vardır.
Bu sözleşmenin neredeyse evrensel kabulü göz önüne alındığında, yeni Error alt sınıflarını uygulamamak en iyisidir. Uyguladığınız denetlenmeyen tüm fırlatılabilir öğelerin RuntimeException (doğrudan veya dolaylı olarak) alt sınıfı olmalıdır.
İstisna, RuntimeException veya Error’ın bir alt sınıfı olmayan bir fırlatılabilir tanımlamak mümkündür. JLS, bu tür fırlatılabilirleri doğrudan ele almaz, ancak bunların davranışsal olarak sıradan kontrol edilen istisnalarla (İstisna’nın alt sınıflarıdır, ancak RuntimeException’ın değil) davranışsal olarak aynı olduklarını zımnen belirtir. Peki böyle bir canavarı ne zaman kullanmalısın?
Sıradan bir kontrol edilen istisnaya göre hiçbir faydası yoktur, yalnızca API’nizin kullanıcısını şaşırtmaya hizmet eder. Özetlemek gerekirse, kurtarılabilir koşullar için kontrol edilen istisnaları ve programlama hataları için çalışma zamanı istisnalarını kullanın. Tabii ki durum her zaman siyah beyaz olmuyor.
Örneğin, makul olmayan büyüklükte bir dizi tahsis etmek gibi bir programlama hatasından veya gerçek bir kaynak kıtlığından kaynaklanabilecek kaynak tükenmesi durumunu düşünün. Kaynak tükenmesi, geçici bir kıtlıktan veya geçici olarak artan talepten kaynaklanıyorsa, durum iyileştirilebilir.
Belirli bir kaynak tükenmesi örneğinin kurtarmaya izin verip vermeyeceği, API tasarımcısının kararına bağlıdır. Bir koşulun kurtarmaya izin verme olasılığının yüksek olduğunu düşünüyorsanız, işaretli bir özel durum kullanın; değilse, bir çalışma zamanı istisnası kullanın. Kurtarmanın mümkün olup olmadığı net değilse, tartışılan nedenlerden dolayı denetlenmeyen bir istisna kullanmanız muhtemelen daha iyi olur.
API tasarımcıları genellikle istisnaların, üzerinde keyfi yöntemlerin tanımlanabileceği tam teşekküllü nesneler olduğunu unutur. Bu tür yöntemlerin birincil kullanımı, istisnayı yakalayan kodu, istisnanın atılmasına neden olan koşulla ilgili ek bilgilerle sağlamaktır.
Bu tür yöntemlerin yokluğunda, programcıların ek bilgileri ortaya çıkarmak için bir istisnanın dize temsilini ayrıştırdıkları bilinmektedir. Bu son derece kötü bir uygulamadır. Sınıflar nadiren dizge temsillerinin ayrıntılarını belirtirler; bu nedenle dize temsilleri uygulamadan uygulamaya ve yayından yayına farklılık gösterebilir. Bu nedenle, bir istisnanın dize temsilini ayrıştıran kodun taşınabilir olmaması ve kırılgan olması muhtemeldir.
Kontrol edilen istisnalar genellikle kurtarılabilir koşulları gösterdiğinden, bu tür istisnaların, arayanın kurtarmasına yardımcı olabilecek bilgileri sağlayan yöntemler sağlaması özellikle önemlidir.
Örneğin, ankesörlü bir telefondan arama yapma girişimi, arayan kişi yeterli miktarda para yatırmadığı için başarısız olduğunda, işaretli bir istisnanın atıldığını varsayalım. İstisna, miktarın telefon kullanıcısına iletilebilmesi için eksiklik miktarını sorgulamak için bir erişimci yöntemi sağlamalıdır.
Java Exception türleri
Java exception handling
Java Exception nedir
Java hata yakalama
Exception handling C#
Exception Handling Nedir
Exception Handling UiPath
C hata Ayıklama örnekleri
Kontrol Edilen İstisnaların Gereksiz Kullanımından Kaçınma
Kontrol edilen istisnalar, Java programlama dilinin harika bir özelliğidir. Dönüş kodlarından farklı olarak, programcıyı istisnai koşullarla başa çıkmaya zorlayarak güvenilirliği büyük ölçüde artırırlar. Bununla birlikte, kontrol edilen istisnaların aşırı kullanımı, bir API’nin kullanımını çok daha az hoş hale getirebilir.
Bir yöntem bir veya daha fazla işaretli istisna atarsa, yöntemi çağıran kodun bir veya daha fazla yakalama bloğundaki istisnaları işlemesi veya istisnaları fırlattığını ve bunların dışarıya yayılmasına izin verdiğini bildirmesi gerekir. Her iki durumda da, programcıya önemsiz bir yük getirir.
İstisnai durum, API’nin doğru kullanımı ile önlenemiyorsa ve API’yi kullanan programcı, istisna ile karşılaştığında bazı yararlı eylemlerde bulunabilirse, yük haklıdır. Bu koşulların her ikisi de geçerli olmadıkça, denetlenmeyen bir özel durum daha uygundur. Bir turnusol testi olarak, programcının istisnayı nasıl ele alacağını kendinize sorun. Yapılabilecek en iyi şey bu mu?
API’yi kullanan programcı daha iyisini yapamazsa, denetlenmeyen bir istisna daha uygun olur. Bu testte başarısız olan bir istisna örneği CloneNotSupportedException’dır. Yalnızca Cloneable uygulayan nesnelerde çağrılması gereken Object.clone tarafından atılır.
Uygulamada, yakalama bloğu hemen hemen her zaman bir onaylama hatası karakterine sahiptir. İstisnanın kontrol edilen doğası programcıya hiçbir fayda sağlamaz, ancak çaba gerektirir ve programları karmaşıklaştırır.
Kontrol edilen bir istisnanın programcı üzerindeki ek yükü, bir metot tarafından atılan tek kontrol edilen istisna ise, önemli ölçüde daha yüksektir. Başkaları varsa, yöntem zaten bir try bloğunda görünmelidir ve bu istisna yalnızca başka bir yakalama bloğu gerektirir. Bir metot tek bir kontrol edilmiş istisna atarsa, metodun bir try bloğunda görünmesi gerektiğinden tek başına bu istisna sorumludur. Bu koşullar altında, kontrol edilen istisnadan kaçınmanın bir yolu olup olmadığını kendinize sormanız gerekir.
Kontrol edilen bir istisnayı kontrol edilmeyen bir istisnaya dönüştürmek için bir teknik, istisnayı atan yöntemi iki yönteme bölmektir; bunlardan ilki, istisnanın atılıp atılmayacağını belirten bir boole değeri döndürür. Bu API dönüşümü, çağrı sırasını bundan dönüştürür.
Bu dönüşüm her zaman uygun değildir, ancak uygun olduğunda bir API’yi kullanımı daha keyifli hale getirebilir. İkinci çağrı dizisi öncekinden daha güzel olmasa da, ortaya çıkan API daha esnektir. Programcının çağrının başarılı olacağını bildiği veya çağrı başarısız olursa iş parçacığının sonlandırılmasına izin vermekten memnun olduğu durumlarda, dönüşüm aynı zamanda bu basit çağrı dizisine de izin verir.
Basit arama sırasının norm olacağından şüpheleniyorsanız, bu API dönüşümü uygun olabilir.
Bu dönüşümden kaynaklanan API, “durum testi yöntemi” API’si ile esasen aynıdır ve aynı uyarılar geçerlidir: Bir nesneye harici senkronizasyon olmadan aynı anda erişilecekse veya harici olarak indüklenen durum geçişlerine tabi ise, bu dönüşüm uygun değildir, çünkü nesnenin durumu actionPermission ve action çağrıları arasında değişebilir.
Ayrı bir actionPermitted yöntemi, eylem yönteminin çalışmasını zorunlu olarak çoğaltacaksa, dönüşüm performans kaygıları nedeniyle reddedilebilir.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)