Aceminin anlayabileceği Java istisna yönetimi

Yazar | A Deity

Sorumlu Editör | Wu Xingling

Üretildi | CSDN (ID: CSDNnews)

İstisnaya giriş

Java'da istisnalar, Java'nın derlenmesi, çalıştırılması veya çalıştırılması sırasında oluşan hatalardır.

Üç tür program hatası vardır: derleme hataları, çalışma zamanı hataları ve mantık hataları

  • Derleme hataları, programın gramer kurallarına uymamasıdır.Derleyici bize hatanın nedenini ve yerini bulabilir ve bize sorabilir.Bu aynı zamanda acemilerin programlama dillerinde yeni olduklarında sıklıkla karşılaştıkları bir sorundur.

  • Çalışma zamanı hatası, çalışma zamanı ortamının program yürütülürken gerçekleştirilemeyen bir işlem bulmasıdır.

  • Mantık hatası, programın beklenen mantıksal sırada çalıştırılmamasıdır. İstisna, program çalışması sırasında meydana gelen hataları ifade eder ve istisna işleme, bu hataları ele almak ve kontrol etmektir.

Bir kod parçasına bakalım:

paket com.yichang;

public class Test {

public static void main (String args) {

System.out.println (1/0); // 0 bölen olamaz

}

}

Koştuktan sonraki sonuç:

Programda bir hata bulduk ve resimdeki hata mesajı bize iki şey anlatıyor:

  • Ne yanlış gitti

  • Hatanın yeri

İstisna süreci

Örnek olarak yukarıdaki kodu alın.Program çalışırken, önce ana yöntem çalıştırılır ve ardından yürütme 1 / 0'a ulaştığında, program bir hata bildirir.Program önce bir hata nesnesi oluşturacak ve sonra hata nesnesini dışarı atacaktır, hepimiz biliyoruz Programımız Java Sanal Makinesi (JVM) üzerinde çalışıyor ve program tarafından atılan hata nesnesi JVM tarafından yakalanacak. Elbette, JVM hata nesnesini yakaladıktan sonra ne yapacağını bilemez, hatayı düzeltmenize yardımcı olamaz ve JVM hata mesajını size yazdıracaktır.

sonuç olarak:

  • Yukarıdaki örnekteki istisna, bir çalışma zamanı istisnasıdır (istisna, bir hatadır)

  • Program bir hata nesnesi oluşturacak ve ardından hata nesnesini dışarı atacaktır (bir istisna atacaktır)

  • Varsayılan olarak, JVM hata bilgilerini yakalar ve yazdırır (istisnayı yakalama)

JVM neden istisnayı doğrudan alamıyor?

Önce aşağıdaki koda bakın:

paket com.yichang; public class Test { public static void main (String args) { System.out.println (1/0); // 0 bölen olamaz System.out.println ("Merhaba"); } }

Sonuç şu şekildedir:

Yukarıdaki koddan ve çalışan sonuçlardan, Hello'nun konsolda yazdırılmadığını görmek zor değil. Bunun nedeni, JVM istisnayı yakaladıktan sonra programın sona ermesidir. Diğer bir deyişle, JVM hatayı işlediğinde, program bu anda sona erecektir, böylece istisnadan sonraki kod çalıştırılamaz. Bunu yaşam örneklerine dayanarak düşünebiliriz. Baidu bir şey bulamadığı için hizmeti ne zaman durduracak, kesinlikle olmayacak. Yani daha sonra yapmamız gereken, istisnayı JVM'ye ulaşmadan önce nasıl durdurup kendi başımıza ayrı ayrı ele alacağımızdır. JVM ile ilgili sorun.

Anormal sınıflandırma

Yukarıdaki örnekte, programın hata nesneleri oluşturacağını söylemiştim, nesneler söz konusu olduğunda, nesnelerin sınıflar tarafından oluşturulduğunu hepimiz biliyoruz.İstisna nesneleri istisna sınıfları tarafından oluşturulmalıdır. Aşağıdaki şekil Java tarafından sağlanan istisna sınıfını göstermektedir:

Şekilden Throwable'ın tüm istisnaların kökü olduğunu görebiliriz ve tüm istisna sınıfları, tıpkı nesne yönelimli tüm sınıfların Object'ten miras alması gibi Throwable'dan miras alır.

Anormal sınıflandırmadan bahsedeyim:

  • RuntimeException: Çalışma zamanı istisnaları genellikle manuel olarak işlemez ve ardından sorunlarla ilgilenir.

  • Diğer İstisna: manuel olarak ele alınmalıdır.

  • Hata: Genellikle sistem düzeyindeki hataları ifade eder.

Acemilerin anlayabilmesi için bu üç anormalliği açıklamak için yaşam örnekleri kullanacağım: Diyelim ki şimdi dağa çıkıyoruz,

  • Sürüş esnasında dağda çok sayıda küçük kaya bulduk ama tüm küçük kayalarla başa çıkamadık bu sırada hala normal bir şekilde sürüyorduk küçük kayalar lastikleri ne zaman kırdı, tekrar inip yedek lastikleri değiştirdik. Çalışma zamanı istisnası

  • Sürüş işlemi sırasında yolu tıkayan büyük bir taş bulundu. Şu anda, dağa çıkmadan önce arabadan inip taşı kaldırmanız gerekiyor. Bu başka bir İstisnadır.

  • Dağ, dağa tırmanma sırasında çöktü ve onu kaldıramazsınız. Yola çıkmadan önce dağın daha iyi olmasını beklemelisiniz Bu, ortalama programcılarımızın başa çıkamayacağı bir hata olan Hata'dır.

İstisna işleme yöntemi

deneyin ··· yakalama işlemi

dilbilgisi:

Deneyin{ // Yürütülecek kod } catch (İstisna e) { // İstisnaları ele almak için kod }en sonunda{ // final }

Aşağıda makaledeki durumu değiştireceğim:

paket com.yichang;

public class Test {

public static void main (String args) {

Deneyin {

System.out.println (1/0); // 0 bölen olamaz

} catch (İstisna e) {

e.printStackTrace; // Programcılar için hata mesajları yazdırın

System.out.println ("Sistemde bir hata oluştu, lütfen yönetici ile iletişime geçin"); // Müşterilerin görmesi için

}en sonunda {

// Genellikle bitirme işi yapın

System.out.println ("Merhaba");

}

}

}

Sonuç şu şekildedir:

  • deneyin-- izleme için kullanılır. İzlenecek kodu (bir istisna atabilecek kod) try ifade bloğuna koyun. Try deyimi bloğunda bir istisna meydana geldiğinde istisna atılır.

  • catch-istisnaları yakalamak için kullanılır. catch, try bloğunda meydana gelen istisnaları yakalamak için kullanılır.

  • nihayet - nihayet blok her zaman çalıştırılacaktır. Esas olarak try bloğunda açılan malzeme kaynaklarını (veritabanı bağlantıları, ağ bağlantıları ve disk dosyaları gibi) kurtarmak için kullanılır.

atar ve işleme atar

  • fırlatır, yöntemin bir istisna atmaya hazır olduğu anlamına gelir

  • atmak demek bir istisna atmak demektir

Örneğin:

paket com.yichang;

public class Test1 {

public static void chu (int a, int b) Exception {atar

eğer (b == 0) {

yeni İstisna oluştur ("Bölen 0 olamaz");

}Başka {

System.out.println (a / b);

}

}

public static void main (String args) Exception {atar

chu (1,0);

}

}

operasyon sonucu:

Yukarıdaki iki yöntem istisnaları ele alır. İstisnayı halledebilirseniz, istisnayı yakalamak ve işlemek için try ··· catch yöntemini kullanın. İstisnayı işleyemiyorsanız, bir istisna atmak için ancak bir programcı olarak atma yöntemini kullanın Her zaman bir cümleyi hatırlamalıyız: kendi ürettiğiniz hatalarla mümkün olduğunca çok ilgilenmek ve daha az istisna atmak.

Özel istisna

Bu noktada, bazı arkadaşlar sormak zorunda kalabilir, neden istisnaları özelleştirmek istiyorsunuz? Java tarafından sağlanan bu kadar çok şey yeterli değil mi? Yeterli değil diyebilirim. Örneğin hayatta erkekler ve kadınlar için ayrı hamamlar olduğunu hepimiz biliyoruz. Bir erkek müşteri bir kadın hamamına girerse veya bir kadın müşteri bir erkek hamamına girerse, bu kötü bir şeydir. , Bu büyük bir anomali, o zaman herkes düşünüyor, jdk bize cinsiyet ve hamamlarla ilgili anormallikler sağlar mı? İmkansız olmalı, o zaman istisnayı şu anda özelleştirmemiz gerekiyor. Hamamı örnek alıyorum ve referansınız için bir program yazıyorum.

Özel istisna: özel istisnaları uygulamak için doğrudan Exception veya RuntimeException devralın

Kişi sınıfı

paket com.yichang; public class Person { Dize adı; // İsim String gender; // Cinsiyet public Kişi (Dize adı, Dize cinsiyeti) { this.name = isim; this.gender = cinsiyet; } }

ZaoTangZi sınıfı

paket com.yichang; public class ZaoTangZi { public void man (Kişi p) GenderException { eğer (p.gender == "") { System.out.println ("Hoş Geldiniz"); }Başka { // Bir istisna atmamız gerekiyor yeni GenderException oluştur ("Cinsiyet hatası, bu bir erkek hamamı"); } } }

GenderException sınıfı

paket com.yichang; public class GenderException, Exception'ı genişletir { // Sizin tarafınızdan tanımlanan istisna, Exception veya RuntimeException olmalıdır public GenderException (String msg) { super (msg); // Ana sınıfın Exception (msg) yapım yöntemini çağırın } }

Test sınıfı

paket com.yichang; public class Test { public static void main (String args), GenderException { Kişi p1 = yeni Kişi ("Zhang San", ""); Kişi p2 = yeni Kişi ("", ""); ZaoTangZi z = yeni ZaoTangZi; z.man (p2); } }

operasyon sonucu:

Bu noktada, istisna işleme ile ilgili bu makale bitmiştir. Okuduktan sonra aşağıdaki soruları anlamalıyız:

  • Anormal olan ne

  • Bir istisna ile nasıl başa çıkılır

  • İstisnalar nasıl özelleştirilir

Biraz uzun soluklu olabilir, ama acemiler için dostça. Lütfen beni affet, umarım sana yardımcı olur.

Aynı dönemde iki makale Nature: Çalışma sıcaklığı 1K'dan yüksek olan kuantum hesaplama platformu çıktı!

Libra'nın Move diline giriş, ilk akıllı sözleşmenizi uygulamak için 10 satır kod

Programcı: "200.000 yuan yıllık maaşla tekliften vazgeçtim"

200.000 tüzel kişi ve milyonlarca banka hesabı bilgisi karanlık web'de satılıyor

Ethereum 2.0'da Saklama Oyunu ve MPC uygulaması

Sizler için çok dikkatli bir şekilde 9 MySQL mülakat sorusu yazdım, toplamanız tavsiye edilir!

Dahi olmayan bir oyuncu olarak, sıradan programcılar nasıl geliştirebilir ve canavarlarla savaşabilir?
önceki
30 yıllık açık kaynak kargaşası: özgür bir topluluktan milyarlarca dolarlık bir şirkete
Sonraki
Hong Kong Bilim ve Teknoloji Üniversitesi Akademisyeni Zheng Guangting geleceği sordu ve AI'nın en son uygulamalarını ve uygulamalarını ortaya çıkardı
Jack Ma, en büyük 25 anti-salgın lider olarak seçildi; Zhou Hongyi, 360 Finansal Hizmetler olarak istifa etti; Node.js 14 yayınlandı | Geek Headlines
Yalnızca lise matematiği algoritmaları keşfedebilir mi? Google'ın açık kaynaklı AutoML-Zero ne kadar güçlü?
Kubernetes'e göre PaaS nasıl seçilir?
Akıllı değişim çağında gezinmek 2020 NAVIGATE Navigator Summit bulutta yelken açıyor
Yarın gece saat 8'de "AI Face Swap" ın sırrını açıklayacağım: fotoğraflarda veya videolarda yüz değiştirmenin arkasındaki temel teknoloji ve uygulama
Süper detaylı! Bu makale, SparkStreaming'in Kafka ile nasıl bütünleştiğini ayrıntılı olarak açıklamaktadır! Kod uygulanabilir
Her dakika 1 milyar düğüm grafiği hesaplaması işleyen Plato'ya ne dersiniz?
15 Nisan'da 348 set günlük devlet ticari konut satıldı ve 175 set ikinci el konut satıldı
Bir çantayla ciltli bir daireye giriş yaptığınızda, Xiamen'deki yetenekler kutsanmıştır! Ayrıca birçok yatırım faydası var
Çim kaz | Hyuna / Jennie / Lisa, aynı tırnak sanatı için kimi seçiyorsunuz?
Sana güzelliği öğret Örme hırka açmanın doğru yolu, beni tıkla
To Top