Standart İstisnaların Kullanımı – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Standart İstisnaların Kullanımı
Uzman programcıları daha az deneyimli programcılardan en güçlü şekilde ayıran özelliklerden biri, uzmanların yüksek derecede kod yeniden kullanımı için çaba göstermeleri ve genellikle bunu başarmalarıdır. İstisnalar, kodun yeniden kullanımının iyi olduğu genel kuralının istisnası değildir.
Java platform kitaplıkları, çoğu API’nin istisna atma gereksinimlerinin büyük bir bölümünü kapsayan temel bir denetlenmeyen istisnalar kümesi sağlar. Bu maddede, yaygın olarak kullanılan bu istisnaları ele alacağız.
Önceden var olan istisnaları yeniden kullanmanın çeşitli faydaları vardır. Bunların başında, programcıların zaten aşina olduğu yerleşik kurallarla eşleştiği için API’nizi öğrenmeyi ve kullanmayı kolaylaştırır. Yakın bir saniye, API’nizi kullanan programların, alışılmadık istisnalarla karışık olmadıkları için okunmasının daha kolay olmasıdır. Son olarak, daha az istisna sınıfı, daha küçük bir bellek ayak izi ve sınıfları yüklemek için daha az zaman harcanması anlamına gelir.
En yaygın olarak yeniden kullanılan özel durum IllegalArgumentException’dır. Bu genellikle, arayan, değeri uygun olmayan bir argümanda geçtiğinde atılacak istisnadır. Örneğin, arayan kişi, bazı eylemlerin tekrarlanma sayısını temsil eden bir parametrede negatif bir sayı iletirse, bu, fırlatma istisnası olacaktır.
Yaygın olarak yeniden kullanılan başka bir istisna, IllegalStateException’dır. Bu genellikle, alıcı nesnenin durumu göz önüne alındığında, çağrının yasa dışı olması durumunda fırlatmanın istisnasıdır. Örneğin, arayan kişi düzgün bir şekilde başlatılmadan önce bir nesneyi kullanmaya çalışırsa, bu istisna olacaktır.
Muhtemelen, tüm hatalı yöntem çağrıları, yasadışı bir argüman veya yasadışı bir duruma indirgenir, ancak diğer istisnalar, belirli türdeki yasadışı argümanlar ve durumlar için standart olarak kullanılır. Bir arayan, null değerlerinin yasaklandığı bazı parametrelerde null değerini geçerse, kural, IllegalArgumentException yerine NullPointerException’ın atılmasını belirtir.
Benzer şekilde, bir arayan bir dizini temsil eden bir parametrede aralık dışı bir değeri bir diziye geçirirse, IllegalArgumentException yerine IndexOutOfBoundsException atılmalıdır.
Bilmeye değer başka bir genel amaçlı istisna, ConcurrentModificationException’dır. Bu istisna, tek bir iş parçacığı tarafından veya harici eşitlemeyle kullanılmak üzere tasarlanmış bir nesnenin eşzamanlı olarak değiştirildiğini (veya değiştirildiğini) algılarsa atılmalıdır.
UnsupportedOperationException, dikkate değer son bir genel amaçlı istisnadır. Bu, bir nesne denenen bir işlemi desteklemiyorsa, fırlatmanın istisnasıdır. Çoğu nesne uyguladıkları tüm yöntemleri desteklediğinden, kullanımı bu maddede tartışılan diğer istisnalara kıyasla nadirdir.
Bu istisna, arabirim tarafından tanımlanan bir veya daha fazla isteğe bağlı işlemi gerçekleştiremeyen arabirim uygulamaları tarafından kullanılır. Örneğin, biri bir öğeyi silmeye çalışırsa, yalnızca eklemeli bir Liste uygulaması bu istisnayı atar.
Bunlar, Java platform kitaplıklarında en yaygın olarak yeniden kullanılan istisnalar olsa da, koşulların gerektirdiği durumlarda diğer istisnalar yeniden kullanılabilir. Örneğin, karmaşık sayılar veya matrisler gibi aritmetik nesneler uyguluyorsanız ArithmeticException ve NumberFormatException’ı yeniden kullanmak uygun olacaktır.
Bir istisna ihtiyaçlarınıza uyuyorsa, devam edin ve kullanın, ancak yalnızca onu atacağınız koşullar istisnanın belgeleriyle tutarlıysa. Yeniden kullanım, yalnızca isme değil, anlambilime dayalı olmalıdır. Ayrıca, biraz daha fazla hata yakalama bilgisi eklemek istiyorsanız, mevcut bir istisnayı alt sınıflara ayırmaktan çekinmeyin.
Son olarak, “kullanım durumları” birbirini dışlamadığından, hangi istisnanın yeniden kullanılacağını seçmenin her zaman kesin bir bilim olmadığını unutmayın. Örneğin, bir iskambil destesini temsil eden bir nesnenin durumunu düşünün.
Varsayalım ki, elin boyutunu bir argüman olarak alan desteden bir eli dağıtmak için bir yöntem var. Arayanın bu parametrede destede kalan kart sayısından daha büyük bir değer ilettiğini varsayalım. Bu, IllegalArgumentException (handSize parametre değeri çok yüksek) veya IllegalStateException (deste nesnesi istek için çok az kart içeriyor) olarak yorumlanabilir. Bu durumda IllegalArgumentException doğru görünüyor, ancak kesin kurallar yoktur.
Java
Java ders kitabı
Java Ders Notları
Java Eğitimi
Java Dersleri
Java sınıflar
Bilgisayar programcılığı Java Ders Notları
Java Giriş Dersleri
Soyutlamaya Uygun İstisnalar
Bir yöntemin gerçekleştirdiği görevle belirgin bir bağlantısı olmayan bir istisna oluşturması endişe vericidir. Bu genellikle, bir yöntem daha düşük düzeyli bir soyutlama tarafından atılan bir istisnayı yaydığında olur. Rahatsız edici olmasının yanı sıra, bu, üst katmanın API’sini uygulama ayrıntılarıyla kirletir. Daha yüksek katmanın uygulaması sonraki bir sürümde değiştirilirse, oluşturduğu istisnalar da değişebilir ve potansiyel olarak mevcut istemci programlarını bozabilir.
Bu sorunu önlemek için, daha yüksek katmanlar daha düşük seviyeli istisnaları yakalamalı ve onların yerine, daha yüksek seviyeli soyutlama açısından açıklanabilir istisnalar atmalıdır.
İstisna zinciri adı verilen özel bir istisna çevirisi biçimi, alt düzey istisnanın istisnaya neden olan durumun hatalarını ayıklamasına yardımcı olabileceği durumlarda uygundur. Bu yaklaşımda, alt düzey özel durum, alt düzey özel durumu almak için bir genel erişimci yöntemi sağlayan üst düzey özel durum tarafından depolanır.
1.4 sürümünden itibaren, istisna zincirleme Throwable tarafından desteklenmektedir. Sürüm 1.4’ü (veya daha sonraki bir sürümü) hedefliyorsanız, üst düzey istisnanızın yapıcı zincirini Throwable(Throwable) olarak kullanarak bu destekten yararlanabilirsiniz.
Erişimci getCause’u adlandırarak ve gösterilen bildirimi kullanarak, istisnayı 1.4 gibi bir sürümde kullanmanız durumunda istisnanızın platformun zincirleme tesisi ile birlikte çalışmasını sağlarsınız. Bu, alt düzey istisnanın yığın izlemesini standart bir şekilde üst düzey istisnanın yığın izlemesine entegre etme avantajına sahiptir. Ayrıca, standart hata ayıklama araçlarının alt düzey istisnaya erişmesine izin verir.
İstisna çevirisi, alt katmanlardan istisnaların akılsızca yayılmasından üstün olsa da, aşırı kullanılmamalıdır. Mümkün olduğunda, alt katmanlardan gelen istisnalarla başa çıkmanın en iyi yolu, onları çağırmadan önce daha düşük seviyeli yöntemlerin başarılı olmasını sağlayarak onlardan tamamen kaçınmaktır. Bazen bunu, üst düzey yöntemin argümanlarını alt katmanlara aktarmadan önce açıkça kontrol ederek yapabilirsiniz.
Alt katmanlardan istisnaları önlemek mümkün değilse, bir sonraki en iyi şey, üst katmanın bu istisnalar etrafında sessizce çalışmasını sağlamak ve üst düzey yöntemin çağıranını alt düzey sorundan yalıtmaktır.
Bu koşullar altında, 1.4 sürümünde tanıtılan Java.util.logging gibi bazı uygun günlüğe kaydetme olanağını kullanarak istisnayı günlüğe kaydetmek uygun olabilir. Bu, bir yöneticinin bir yandan istemci kodunu ve son kullanıcıyı bu koddan yalıtırken diğer yandan sorunu araştırmasına olanak tanır.
Alt katmanlardan gelen istisnaları önlemenin veya daha yüksek katmanları izole etmenin mümkün olmadığı durumlarda, genellikle istisna çevirisi kullanılmalıdır. Yalnızca alt düzey yöntemin belirtimi, attığı tüm istisnaların üst düzeye uygun olduğunu garanti ediyorsa, istisnaların alt katmandan üst katmana yayılmasına izin verilmelidir.
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)