CodeGym /Java Blogu /Rastgele /Eski Seviye 09
John Squirrels
Seviye
San Francisco

Eski Seviye 09

grupta yayınlandı

Bilgi ve Beceriler

Eski Seviye 09 - 1Üniversite bize teori ve pratik arasında büyük bir fark olmadığını öğretti. Elbette bunun aynı olmadığını anlıyorsundur. Ama temel farkı göremiyorsunuz. Yine de bir tane var. Çoğu insan “biliyorum” ve “yapabilirim” arasına eşitlik işareti koyar. Yapıyor musun? Birkaç örneğe ne dersiniz?
  1. Sigara içmenin benim için kötü olduğunu biliyorum ama sigara içiyorum.
  2. Fast-food'ın benim için kötü olduğunu biliyorum ama yiyorum.
  3. Trafik kurallarını biliyorum ama araba kullanamıyorum.
  4. Jogging yapmanın benim için iyi olduğunu biliyorum ama sabahları jogging yapmıyorum.
Çoğu zaman insanların "yapabilirim" için "biliyorum"u aldıkları olur. Trafik kuralları ile güzel bir örnek. Bir kişi kuralları biliyorsa ve araba kullanmayı biliyorsa, bu onun araba kullanabildiği anlamına mı gelir? Hayır. Ya araba kullanmayı bildiğini sanıyorsa? Öyleyse neden bir eğitmene ihtiyacı olsun ki - o zaten her şeyi biliyor. Zaten her şeyi bildiğinizden emin olduğunuzda, muhtemelen yeni bir şey öğrenmeyeceksiniz. Ve her şeyi nasıl yapacağınızı bildiğinizden eminseniz, ders çalışmazsınız. Böyle bir düşünce aklınızın ucundan bile geçmez. Ve bu, bir şeyler öğrenmek için tüm harika fırsatları kaçıracağınız anlamına gelir. Normal üniversite size yalnızca bilgi verir; becerileri kendi başınıza edinmeniz gerekecek. Ama ne duyuyorum? Üniversitenizde teorinin yanı sıra uygulamanız da oldu mu? Tamam, fizik fakültesinde okuduysanız, en az %20 verimlilikle çalışan bir buhar makinesi modeli yapın. Nasıl yapılacağını bildiğine bahse girerim ama aslında yapamayacaksın, değil mi? Sen kimyager misin ? Dumansız toz yapın. Nasıl olduğunu biliyorsun ama yapamıyorsun, ha? Matematikçi misin? Bir top mermisinin yörüngesini hesaplayın. Kabuğun şeklini dikkate almayı unutmayın. Matematiksel noktalar gerçek hayatta uçmaz. Ve küresel atlar yok. Eski Seviye 09 - 2Biyolog? Penisilin izole edin. Bu küf kavunlarda yetişir, yani bilirsiniz. Nasıl olduğunu biliyorsun - harika! Bunu yapabilirmisin? İktisatçı?Petrolde fiyat artışı tahmini yapın. Tamamlamak? Ve şimdi tahmininize göre yılda 2.000$ veya 200.000$'a çevirin. Hiç FOREX'te oynadınız mı? Gerçek para için mi? Ya da sadece ne olduğunu biliyor musun? Uluslararası Ekonomi? Görkemli! Offshore şirketi nerede açarım? Hong Kong, İrlanda veya ABD'de. Neden? Bunu bilseniz bile, ki bu şüphelidir, aslında onu hiç yapmadığınız için, onu pek yapamayacaksınız. Bunu nasıl yapacağınıza dair en ufak bir fikriniz bile yok. Oh, bunu üniversitede okumadın mı? Sana hazırlıksız olduğun görevleri vermeye ne hakkım var? Çünkü bunlar gerçek hayatın görevleridir. Bu IS pratiği , üniversitede okuduğunuz tek şey: küresel atlar, mükemmel rekabet - bunların hiçbiri gerçek hayatta yok. Ama neden bahsetmeyi unuttumpazarlama uzmanı ? Mümkün olduğu kadar çok kişinin derslerimden haberdar olması için 500 dolarımı harcamanın en iyi yolu nedir? Reklamda mı? Sadece klasik reklamcılığın değil, aynı zamanda size üniversitede neredeyse her derde deva olarak öğretildiğinden emin olduğum USP (benzersiz satış önerisi) kavramının da modası geçmiş olduğunun farkında mısınız? Her şeyi bildiğini unut. Kendinize sorun - ne yapabilirim? Yararlı derken? İnsanların para ödeyeceği bir şey mi? İyi para derken? Öyleyse arkadaşlar, CodeGym gibi harika bir kursa şükranlarımızı sunalım. Bu sayede sadece nasıl programlanacağını bilmekle kalmayacak, aynı zamanda bunu gerçekten yapabileceksiniz. Ayrıca birkaç yıl içinde bir iş bulabilir ve iyi para kazanabilirsiniz. Umarım bu para güzel ve rahat yaşamak için yeterli olur. Hatırlamanız için bir kez daha söyleyeceğim: ne bildiğinizin bir önemi yok. Önemli olan tek şey, hangi yararlı becerilere sahip olduğunuz, insanların size ödemeye istekli olacağı becerilerdir. Bunu ne kadar erken anlarsan o kadar iyi.

yeni bir seviyeye ulaştınız

9. Seviye

Eski Seviye 09 - 3

1 Risha, Yığın izleme

Eski Seviye 09 - 4- Hey! Bugün size yığın izlemenin ne olduğunu anlatacağım. Ama önce yığının ne olduğunu açıklayayım. - Bir yığın kağıt düşünün - belirli bir katip için görevler. Yığının en üstüne yeni bir görev konulabilir ve o, yığının en üstünden bir görev alır. Böylece atamalar ilk gelende yapılmayacak. Katip her seferinde en son gelen görevi alır. Böyle bir toplama yapısına yığın denir . - Java'da özel bir koleksiyon vardır - Yığın. Bu koleksiyonda «bir öğe ekle» ve «bir öğeyi al(al/al)» yöntemleri vardır. Bildiğiniz gibi, en son eklenen eleman ilk olarak alınacaktır. - Hımm. Sanırım zor değil. - İyi. O zaman yığın izlemenin ne olduğunu açıklayayımdır-dir. - Java'da A işlevinin B işlevini çağırdığını ve ikincisinin C işlevini çağırdığını ve bunun da D işlevini çağırdığını hayal edin . Bu nedenle, B işlevinden çıkmak için önce C işlevinden çıkmalısınız ve bunu yapmak için D işlevinden çıkmalısınız . Bu bir yığına çok benzer. - Ve benzerlik nedir? - Yığında, belirli bir göreve ulaşmak için, üste konulan tüm görevleri de tamamlamanız gerekir. - Bu bir tür benzetme ama her şeyi doğru anladığımdan emin değilim. - Buraya bak. Java'da yığın, bir öğeler kümesidir. Bir yığın kağıt gibi. Üstten üçüncüyü almak için ikinci sayfayı almalısın, ama ondan önce ilkini almalısın. Her zaman çarşaf koyabilir ve alabilirsiniz, ancak bunları yalnızca üste koyabilir ve yalnızca üstten alabilirsiniz. Aynı işlev çağrısı için de geçerlidir. A işlevi B işlevini çağırır , ikincisi C işlevini çağırır . A'dan çıkmak için önce B'den çıkmalısınız ve bunu yapmak için C'den çıkmalısınız . - Bir dakika bekle. Doğru anladıysam, yığının tamamı "yalnızca yığına konan son sayfa alınabilir" ve "önce, son çağrılan işlevden çıkılmalı" şeklinde çıkıyor. Böylece? - Evet. Bu nedenle, işlev çağrılarının sırası "işlev çağrısı yığını" veya basitçe "çağrı yığını" şeklindedir. Last adlı işlev önce sonlandırılmalıdır. Örneğe bakalım: Eski Seviye 09 - 5- Tamam. İşlev çağrısıyla ilgili her şey açık sanırım. Ama bu StackTraceElement nedir ? - Java sanal makinesi tüm işlev çağrılarını günlüğe kaydeder. Bu amaçla özel bir koleksiyona sahiptir - yığın. Bir işlev diğerini çağırdığında, JVM bu yığına yeni bir StackTraceElement öğesi yerleştirir. Fonksiyon sona erdiğinde, eleman yığından silinir. Böylece, bu yığın her zaman «işlev çağrısı yığınının» mevcut durumu hakkında güncel bilgileri saklar. - Her StackTraceElementçağrılan yöntem hakkında bilgi içerir. Böylece getMethodName kullanarak bu yöntemin adını alabilirsiniz . - Yukarıdaki örnek bunu gösteriyor:
  1. «Çağrı yığınını» alın:
  2. for-each döngüsünü kullanarak diziyi yineleyin . Umarım unutmamışsındır.
  3. Yöntem adlarını System.out'a yazdırın .
- İlginç bir şey ve görünüşe göre kolay. Teşekkürler Risha!

2 Diego, Yığın izleme ekranında görev

- Selam dostum! İşte ekranda bir yığın izlemeyi görüntülemek için küçük bir görev.
Görevler
1
Her yöntem, birbirini çağıran StackTrace Write beş yöntemini döndürmelidir . Her yöntem kendi StackTrace'ini döndürmelidir.
2 StackTrace tekrar
Birbirini çağıran beş metot yazın. Her yöntem çağıran yönteminin adını döndürmelidir. StackTrace'i kullanarak arayan yöntemini elde edebilirsiniz.
3
Yöntem , birbirini çağıran beş yöntemden bu yöntemin çağrıldığı kodun satır numarasını döndürmelidir . Her yöntem, bu yöntemin çağrıldığı kodun satır numarasını döndürmelidir. element.getLineNumber() işlevini kullanın .
4 10 çağrının yığın izlemesi
10 çağrının yığın izini almak için kod yazın.
5 Yöntem bir sonuç döndürmelidir - yığın izleme derinliği
Yığın izleme derinliğini görüntüleyen ve döndüren bir yöntem yazın. Yığın izleme derinliği, yöntemlerinin sayısıdır (listedeki öğelerin sayısı).

3 Elly, Hatalar ve İstisnalar

- Selam dostum! Bugün çok ilginç bir dersimiz var. Size istisnalardan bahsedeceğim. İstisna, programdaki hataları kontrol etmek için özel bir mekanizmadır. Programda meydana gelebilecek bazı hata örnekleri aşağıda verilmiştir:
  1. Program, tam diske bir dosya yazmaya çalışır.
  2. Program, boş referansı saklayan bir değişken yöntemini çağırmaya çalışır.
  3. Program bir sayıyı 0'a bölmeye çalışır.
Bu işlemler bir hatayla sonuçlanır. Genellikle bu, bir programın kapanmasına yol açar - kodu çalıştırmaya devam etmenin bir anlamı yoktur. - Nedenmiş? - Araba uçurumdan düşerken direksiyonu çevirmenin bir anlamı var mı? - Programın bitmesi gerektiğini mi söylüyorsunuz? - Evet. Daha önce böyleydi. Herhangi bir hata, bir programın sonlandırılmasına yol açtı. - Bu çok akıllıca bir karar. - Üzerinde çalışmaya çalışsan daha iyi olmaz mı? - Evet. MS Word'de çok büyük bir metin yazdınız, kaydettiniz, kaydedilmedi, ancak program size her şeyin yolunda olduğunu söylüyor. Ve yazmaya devam ediyorsunuz. Aptalca, değil mi? - Evet. - Sonra programcılar ilginç bir hamle buldular:her işlev, işinin durumunu döndürdü. 0, işlevin olması gerektiği gibi çalıştığı anlamına gelir, diğer herhangi bir değer - bir hata olduğu anlamına gelir : bu değer bir hata koduydu. - Ancak bu yaklaşımın bir dezavantajı vardı. Her (!) işlev çağrısından sonra, işlev tarafından döndürülen kodu (sayı) kontrol etmeniz gerekiyordu. İlk olarak, elverişsizdi: hata işleme kodu nadiren çalıştırılıyordu, ancak her zaman onu yazmak zorundaydınız. İkincisi, işlevlerin kendileri genellikle farklı değerler döndürür - onlarla ne yapmalı? - Evet. Ben de bunu soracaktım. - Sonra parlak bir gelecek geldi - istisnalar ve hata işleme ortaya çıktı. İşte nasıl çalıştığı:
  1. Bir hata oluştuğunda, Java sanal makinesi hatayla ilgili tüm bilgileri içeren özel bir nesne (istisna) oluşturur. Farklı hatalar için farklı istisnalar vardır.
  2. Daha sonra bu istisna, programı ana yöntemden çıkana kadar mevcut işlevi ve bir sonraki işlevi derhal kesmeye zorlar. Bundan sonra program sonlandırılır. Java geliştiricileri bu işleme "çağrı yığınını geri alma" adını verir.
- Ama programın kesin olarak çıkmayacağını söylediniz. - Bu doğru, çünkü istisnayı yakalamanın bir yolu var. Ne zaman ve nerede ihtiyacınız olursa, bu istisnaları yakalamak ve önemli bir şey yapmak için özel bir kod yazabilirsiniz. - Bunu yapmak için özel bir inşaat try-catch var . Bakın nasıl çalışıyor: Eski Seviye 09 - 6- Neden «Yöntem1 çağrısından sonra. Asla gösterilmeyecek» ekranda görüntülenmeyecek mi? - Sorduğuna sevindim. 25. satırda sıfıra bölme işlemi var. Bu bir hataya yol açar - bir istisna. Java sanal makinesi, hata bilgilerini içeren ArithmeticException nesnesini oluşturdu . Bu nesne bir istisnadır. - method1() yönteminde bir istisna oluştu .Bu, yöntemin derhal sonlandırılmasına neden oldu. Try-catch bloğu yoksa, main yönteminin sonlandırılmasına da yol açardı . - Try bloğu içinde bir istisna oluşursa, catch bloğunda yakalanır . try bloğundaki kodun geri kalanı yürütülmeyecek, blok yakalamanın yürütülmesi hemen başlayacaktır. - Pek anlamadım. - Başka bir deyişle, bu kod şöyle çalışır:
  1. Try bloğu içinde bir istisna oluşursa , bu bloktaki kod artık yürütülmez, ancak catch bloğunun yürütülmesi başlar.
  2. İstisna oluşmadıysa , try bloğu sonuna kadar yürütülür ve catch hiçbir zaman yürütülmez .
- Öhö! - Her yöntem çağrısından sonra, çağrılan yöntemin kendi kendine mi yoksa bir istisna nedeniyle mi sonlandırıldığını kontrol ettiğimizi hayal edin. Bir istisna varsa, JVM varsa blok yakalamayı yürütmeye başlar ve bir istisna yakalar. Bir catch bloğu yoksa, JVM geçerli yöntemi sonlandırır. Daha sonra cari metodu çağıran metodda aynı kontrol başlar. - Şimdi anladım sanırım. - Bu iyi. - Ve catch bloğu içindeki İstisna nedir? - Tüm istisnalar, İstisna sınıfından miras alınan sınıflardır. Yakalamada sınıfını belirterek bunlardan herhangi birini yakalayabiliriz.ortak bir ebeveyn sınıfı İstisnası belirterek hepsini birden bloke edin. Ardından, e değişkeninden (bu değişken bir istisna nesnesinin referansını saklar) hata hakkında gerekli tüm bilgileri alabilirsiniz. - Harika! Ve eğer benim yöntemimde farklı istisnalar meydana gelirse, onları farklı şekillerde halledebilir miyim? - Yapmalısın. Bunu şu şekilde yapabilirsiniz: - try bloğu , her biri kendi türündeki istisnaları yakalayacak birden çok catchEski Seviye 09 - 7 bloğu içerebilir . - Umph. Pekala, anladım. Tabii ki, kendim böyle bir şey yazmayacağım. Ancak, böyle bir kodla karşılaşırsam korkmayacağım.

4 Elly, RuntimeException, atar

Eski Seviye 09 - 8- Bugün başka bir konuyu gündeme getirmeye karar verdim. Java'da, tüm istisnalar iki türe ayrılır - kontrollü/kontrol edilmiş ve kontrolsüz/kontrolsüz . Kontrol edilen istisnalar yakalanmalı , kontrol edilmeyen istisnalar yakalanabilir ancak bu gerekli değildir . - Bir koda bilerek istisnalar atmak mümkün mü? - Kodunuzda istisnaları kendiniz atabilirsiniz. Kendi istisnalarınızı bile yazabilirsiniz. Ama daha sonra bu deliğin derinliklerine ineceğiz. Şimdi Java sanal makinesi tarafından atılan istisnalarla nasıl çalışılacağını öğrenelim. - TAMAM. - ClassNotFoundException ve FileNotFoundException istisnaları isebir yöntemde atılır (görünür), programcının bunları bir yöntemin imzasında (yöntem başlığı) belirtmesi gerekir. Bu tür istisnalar kontrol edilir. Genelde şöyle görünür: Eski Seviye 09 - 9- Yani, sadece atmalar yazarız ve istisnaları virgülle ayırarak listeleriz. Sağ? Böylece? - Evet. Ama ilginç bir şey daha var. Aşağıdaki örneğin derlenebilmesi için, method1()' i çağıran yöntemin bu istisnaları yakalaması ya da ileri atması gerekir. Kontrol edilen istisnayı ileriye atmak istiyorsanız, bunu yöntemin başlığında belirtmeniz gerekir . - Bir kez daha, ana yöntemde, başlık ifadesinde throws FileNotFoundException olan bir yöntemi çağırmak istiyorsanız, …o zaman şu iki şeyden birini yapmalısın:
  1. istisnaları yakalamak için FileNotFoundException, …
    Tehlikeli bir yöntem olarak adlandırdığınız kodu bir try-catch bloğu ile sarmanız gerekir.
  2. istisnaları yakalamamak için FileNotFoundException, …
Bu istisnaları main yönteminizin fırlatma listesine eklemeniz gerekecek . - Bana bir örnek verir misin? - Buraya bakın: - Bu örnek derlenmeyecek çünkü main yöntemi , yakalanması gereken istisnaları atan method1() yöntemini çağırıyor. - Örneğin derlenmesi için, main yöntemine istisna işleme eklemeniz gerekir . Bunu iki şekilde yapabilirsiniz: - Ve burada try-catch kullanarak yakalıyoruz : - Netleşiyor ama çok az. - Aşağıdaki örneğe bakın: - Hala bir istisna var – RuntimeException ve ondan miras alınan sınıflar.Eski Seviye 09 - 10Eski Seviye 09 - 11Eski Seviye 09 - 12Eski Seviye 09 - 13Bunları yakalamak veya atmak gerekli değildir. Bunlar denetlenmeyen istisnalardır. Bu istisnaların tahmin edilmesi zor kabul edilir, bu nedenle oluşumlarını tahmin etmek neredeyse imkansızdır. Onlarla aynı şeyleri yapabilirsiniz, ancak throws içinde belirtmenize gerek yoktur .

5 Risha, Çağrı yığınını yuvarlama, istisnalarda nasıl yapılır

- Size istisnaların nasıl çalıştığı hakkında biraz daha bilgi vermek istiyorum. Aşağıdaki örnek şunu açıklıyor: Eski Seviye 09 - 14- Anlamıyorum. - Tamam. Neler olduğunu açıklayacağım. - Soldaki örnekte birkaç metodu zincirleme sırayla çağırıyoruz. Method2()' de özellikle bir istisna yaratır ve fırlatırız (bir hatayı başlatmak için). - Sağdaki örnek ne olduğunu gösteriyor. method2() ' ye bakın . İstisna yaratmanın dönüştüğü şey budur: RuntimeException türünde bir nesne yaratırız , onu özel bir istisna değişkeninde saklarız ve hemen dönüş yönteminden çıkarız . - method1'de , method2 çağrısından sonra bir kontrol var,istisna var mı yok mu; bir istisna varsa, yöntem1 hemen sonlandırılır. Bu kontrol, her (!) Java yöntemi çağrıldıktan sonra dolaylı olarak yapılır. - Vay! - Kesinlikle. - Main metodunda sağdaki kolona try-catch bloğu tarafından bir istisna yakalandığında ne olduğunu yazdım . İstisna yoksa, kod planlandığı gibi çalışmaya devam eder. catch içinde belirtilen türden bir istisna varsa , onu biz hallederiz. - Ve throw ve instanceof ne anlama geliyor? - Soldaki son satıra bakın, yeni RuntimeException(lar) atın. Bu şekilde bir istisna oluşturup atıyoruz. Bu sadece bir örnek. Şimdiye kadar yapmayacağız. - Sağ blokta « а instanceof B » komutunu kullanarak a nesnesinin B tipine sahip olup olmadığını kontrol ederiz . Diğer bir deyişle, özel durum değişkeninde depolanan nesnenin RuntimeException türünde olup olmadığıdır . Mantıklı bir ifadedir. - Şey, biraz daha netleşiyor.

6 Diego, İstisna yakalama görevi

- Buraya bak! Diego Amca senin için yakalama konusunda birkaç görev getirdi. Sana şans diliyorum. Bence ihtiyacın olacak. Heh. Eski Seviye 09 - 15- Selam dostum! İşte bazı ilginç istisna yakalama görevleri.
Yakalama görevleri
1 1. Sayılarla çalışırken istisna
Kodu çalıştırdığınızda oluşan istisnayı yakalayın:
int a = 42 / 0;
Türünü belirterek istisnayı ekranda görüntüleyin
2 2. Dizelerle çalışırken istisna
Kod çalıştırıldığında oluşan istisnayı yakalayın:
String s = null;
String m = s.toLowerCase();
Türünü belirterek istisnayı ekranda görüntüleyin.
3 3. Dizilerle çalışırken istisna
Kodu çalıştırdığınızda oluşan istisnayı yakalayın:
int[] m = new int[2];
m[8] = 5;
Türünü belirterek istisnayı ekranda görüntüleyin.
4 4. Liste koleksiyonlarıyla çalışırken istisna
Kod çalıştırıldığında oluşan istisnayı yakalayın:
ArrayList<String> list = new ArrayList<String>();
Dizi s = list.get(18);
Türünü belirterek istisnayı ekranda görüntüleyin.
5 5. Harita koleksiyonlarıyla çalışırken istisna
Kodu çalıştırdığınızda oluşan istisnayı yakalayın:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(boş, boş);
map.remove(boş);
Türünü belirterek istisnayı ekranda görüntüleyin.
- İpucu: önce bir program yazın, sonra hangi istisnanın oluştuğunu görün ve ondan sonra kodu değiştirin ve o istisnayı yakalayın.

7 Risha, Çoklu yakalama nasıl çalışır?

Eski Seviye 09 - 16- Şimdi biraz daha ilginç dersler. Öğretmeyi çok seviyorum. - Size çoklu yakalamanın nasıl çalıştığını anlatmak istiyorum . Aslında çok basit: try bloğunda bir istisna oluştuğunda , program yürütmesi ilk catch'e aktarılır . - Yakalama bloğunun parantez içinde belirtilen türü, istisna nesnesinin türüyle aynıysa, kod yürütme {} içinde başlar. Aksi takdirde bir sonraki yakalamaya gideriz . Kontrol orada tekrarlanır. - Artık catch bloğu yoksa , ancak istisna yakalanmadıysa, ileri atılır ve geçerli yöntem kesintiye uğrar. - Anlıyorum. Bu yakalama, türü istisna türüyle eşleşen yürütülür. - Evet doğru. Aslında, biraz daha karmaşık: Buradaki nokta, sınıfların birbirinden miras alınabilmesidir. «İnek» sınıfı, «Hayvan» sınıfından miras alınmışsa, «İnek» türündeki nesne yalnızca «İnek» türündeki bir değişkende değil, aynı zamanda «Hayvan» türündeki bir değişkende de saklanabilir. . - Ne olmuş? - Tüm istisnalar, İstisna veya RuntimeException sınıflarından miras alındığından (bu da İstisna'dan miras alınır ), hepsi catch (Exception e) veya catch (RuntimeException e) komutları kullanılarak yakalanabilir . - Ne olmuş? - Bu şu demek,ilk olarak, catch(Exception e) komutunu kullanarak herhangi bir istisnayı yakalayabilirsiniz . İkincisi, catch bloklarının sırası önemlidir. Örnekler: - 0'a bölmeden kaynaklanan ArithmeticException, ikinci yakalamada yakalanır. Eski Seviye 09 - 17- Aşağıdaki örnekte, ArithmeticException ilk catch'te yakalandı , çünkü tüm istisnaların sınıfları İstisna'dan devralındı. Böylece, İstisna herhangi bir istisnayı yakalar . Eski Seviye 09 - 18- Aşağıdaki örnekte, ArithmeticException istisnası yakalanmaz, ancak çağıran yönteme iletilir. Eski Seviye 09 - 19- Şimdi daha da netleşiyor. Bu istisnalar o kadar kolay değil. - Öyle görünüyor. Aslında, Java'daki en basit şeylerden biridir. - Buna sevinsem mi üzülsem mi kararsızım…

8 Diego, Çoklu istisna yakalama görevleri

- Selam dostum! Dün sarhoş oldum ve görevlerinizi aşırı karmaşık hale getirdim, ama umarım sizin açınızdan herhangi bir dargınlık yoktur ve hepsini çözersiniz? Bu kendi iyiliğin için. Burada:
Görevler
1 1. İstisnalar İstisna'dan ve RuntimeException'dan miras alınan iki
istisna atan bir yöntem vardır : NullPointerException , ArithmeticException , FileNotFoundException ve URISyntaxException . NullPointerException ve FileNotFoundException'ı yakalamanız gerekir , ancak ArithmeticException ve URISyntaxException'ı yakalamamanız gerekir . Nasıl yapılır?

2 2. İstisnaları yakalamak İstisnadan
ardışık olarak miras alınan üç istisna vardır : sınıf İstisna1 genişletir İstisna sınıfı İstisna2 genişletir İstisna1 sınıf İstisna3 genişletir İstisna2 Aşağıdaki şekilde açıklanan bir yöntem vardır: public static void method1(), İstisna1, İstisna2, İstisna3'ü atar Bir yakalama yaz üç İstisna1 , İstisna2 ve İstisna3'ün tümünü yakalamak için blok






3 3. Seçici istisnaları yakalama 1. BEAN.methodThrowExceptions
yöntemi tarafından hangi istisnaların atıldığını öğrenin . 2. processExceptions() yöntemi, BEAN.methodThrowExceptions yöntemini çağırmalı ve istisnaları işlemelidir: 2.1. bir FileSystemException istisnası oluşursa, BEAN.log yöntemini çağırarak günlüğe kaydedin ve 2.2'yi ileriye atın. CharConversionException veya başka bir IOException istisnası oluşursa, BEAN.log yöntemini çağırarak günlüğe kaydetmeniz yeterlidir. 3. İlettiğiniz istisnanın sınıfını/türünü 2.1'de ekleyin. processExceptions ()' a



yöntem imzası
4. Kalan istisnayı main() yönteminde işleyin ve günlüğe kaydedin. try..catch kullanın

İpucu: Yakalamak istemediğiniz MyException istisnasını
yakaladıysanız , aşağıdaki kodu kullanarak onu ileri atabilirsiniz: catch (MyException e) { throw e; }



4 4. Kontrol edilen istisnaları yakalama processExceptions()
yöntemindeki tüm kontrol edilen istisnaları işleyin . Meydana gelen kontrol edilen her istisnayı ekranda görüntülemeniz gerekir. Yalnızca bir blok try kullanabilirsiniz .

5 5. Denetlenmeyen istisnaları yakalama processExceptions()
yöntemindeki tüm denetlenmeyen istisnaları işleyin . printStack() yöntemini kullanarak meydana gelen her istisnanın bir yığın izini ekranda görüntülemeniz gerekir . Yalnızca bir blok try kullanabilirsiniz .

9 Profesör, İstisnalar üzerine ders

- Bugün süper ilginç bir konumuz var - istisnalar. O sıralar, genç bilim insanları ve programcılar bu konu hakkında çok heyecanlıyken… - Üzgünüm, laboratuvara gitmeliyim. İşte ders notları. Bence kendin çözeceksin. Burada: Java İstisnaları (Oracle Dokümantasyonu) Java'da İstisna Yönetimi (Java T noktası) Java - İstisnaları Ele Alma (öğreticiler noktası) Temel Java İstisnası Ele Alma

10 Temmuz

- Amigo, bugünkü ders hakkında ne düşünüyorsun? Pozitron beyniniz henüz çalışmadı mı? Diego'nun görevleri herkesi yıpratmaya yeter. Bir bira anı yaşayalım ve rahatlayalım. Hala ayakta mısın?

11 Kaptan Sincap

- Merhaba asker! - Günaydın efendim! - Size harika haberlerim var. İşte becerilerinizi pekiştirmek için hızlı bir kontrol. Bunu her gün yapın ve becerilerinizi çok hızlı bir şekilde geliştireceksiniz. Görevler, Intellij IDEA'da yapılacak şekilde özel olarak tasarlanmıştır.
Intellij Idea'da yapılacak ek görevler
1 1. Sıfıra bölme Herhangi bir sayıyı sıfıra bölmeniz ve bölmenin sonucunu ekranda göstermeniz gereken
bir public static void partitionByZero() yöntemi oluşturun. DivisionByZero() yöntem çağrısını bir try..catch içine
sarın . Exception.printStackTrace() yöntemini kullanarak istisna yığın izini ekrana görüntüleyin .
2 2. 10'dan 0'a geri sayım
10'dan 0'a geri sayım için bir döngü yazın. Gecikme yapmak için Thread.sleep(100) kullanın; Uyku çağrısını bir try..catch içine
sarın .
3 3. Bir yöntemi bir try..catch
Klavyeden sayıları oku içine sarın. Klavyeden sayıları okumak için ayrı bir readData() yöntemine bir kod yazın . Bu yöntemin tüm gövdesini ( sayıların depolanacağı listenin bildirimi dışında readData()
yönteminin içindeki kodun tamamı ) bir try..catch içine sarın . Kullanıcı bir sayı girmek yerine bir metin girerse, yöntemin istisnayı yakalaması ve daha önce girilen tüm sayıları ekrana göstermesi gerekir. Numaraları ekrana göster. Her numara yeni bir satırda olmalıdır. Sayıların sırası tıpkı girdideki gibi olmalıdır.


4 4. Tarih dönüştürücü
Klavyeden «08/18/2013» biçiminde bir tarih okuyun.
O tarihi «AĞUSTOS 18, 2013» biçiminde ekranda görüntüleyin. Date ve SimpleDateFormat
nesnelerini kullanın .
5 5. Ünlüler ve ünsüzler
Klavyeden satır okuyan bir program yazınız.
Program ekrana iki dizi göstermelidir:
1) birinci dizi ünlüleri içermelidir
2) ikinci dizi girilen metinden ünsüzleri ve noktalama işaretlerini içermelidir.
Karakterleri boşluklarla ayırın.

Örnek girdi:
Dur bak dinle
Örnek çıktı:
oooie
stplklstn
6 6. Kırmızı Başlıklı Kızın Hikayesi
1. Beş sınıf vardır: Kırmızı Başlıklı Kız, büyükanne, börek, oduncu, kurt.
2. Her sınıfın ArrayList türünde iki alanı vardır: kill ve eat.
3. Gerekli nesneler zaten yaratılmıştır (başlık, büyükanne, ...).
4. «Kırmızı Başlıklı Kız» mantığını elde etmek için doğru ilişkiyi (kim kimi yedi ve öldürdü) oluşturun.
7 7. Statik değişiklikleri taşı
Kodun derlenmesi için statik değiştiricileri taşı.
8 8. Sayı dizileri listesi
Öğeleri sayı dizileri olan bir liste oluşturun. Sırasıyla 5, 2, 4, 7, 0 uzunluğundaki beş nesne dizisini listeye ekleyin. Dizileri herhangi bir veriyle doldurun ve ekranda görüntüleyin.
9 9. On kedi String name alanıyla bir Cat sınıfı
oluşturun . Map<String, Cat> sözlüğünü oluşturun , «Ad» - «Kedi» modeline 10 kedi ekleyin. Haritadan bir İsim Seti alın ve seti ekranda görüntüleyin .

- O görevler yeşillikler içindi. Daha yüksek karmaşıklıkta bonus görevler ekledim. Sadece en iyi silahlar için.
Bonus görevler
1 1. Program derlenmiyor ve çalışmıyor. Düzelt.
Görev: Program klavyeden iki dosya adını okumalı ve ilk dosyayı ikinci adla belirtilen konuma kopyalamalıdır.
2 2. Programa yeni işlevler ekleyin.
Eski Görev: Program klavyeden iki dosya adını okumalı ve ilk dosyayı ikinci adla belirtilen konuma kopyalamalıdır.
Yeni görev: Program klavyeden iki dosya adını okumalı ve ilk dosyayı ikinci adla belirtilen konuma kopyalamalıdır.

Belirtilen isimde (kopyalanacak olan) dosya mevcut değilse, program ekrana «Dosya yok» mesajını göstermeli ve dosyayı okumadan önce konsoldan dosya adını bir kez daha okumaya çalışmalıdır. ikinci (hedef) dosyanın adı.
3 3. Algoritmayı öğrenmek ve uygulamak.
Klavyeden kelime ve sayı listesini okuyun. Ekrana sözcükleri artan sırada ve sayıları azalan sırada görüntüleyin.

Örnek girdi:
Kiraz
1
Fasulye
3
Elma
2
0
Karpuz

Örnek çıktı:
Elma
3
Fasulye
2
Kiraz
1
0
Karpuz
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION