CodeGym /Java Blog /Acak /Tingkat Lama 09
John Squirrels
Level 41
San Francisco

Tingkat Lama 09

Dipublikasikan di grup Acak

Pengetahuan vs Keterampilan

Tingkat Lama 09 - 1Perguruan tinggi mengajarkan kita bahwa tidak ada perbedaan besar antara teori dan praktik. Nah, pasti Anda mengerti bahwa itu tidak sama. Tetapi Anda tidak melihat perbedaan intinya. Namun ada satu. Kebanyakan orang memberi tanda kesetaraan antara "Saya tahu" dan "Saya bisa". Apakah kamu? Bagaimana dengan beberapa contoh?
  1. Saya tahu bahwa merokok itu buruk bagi saya, tetapi saya merokok.
  2. Saya tahu bahwa makanan cepat saji tidak baik untuk saya, tetapi saya memakannya.
  3. Saya tahu peraturan lalu lintas tapi saya tidak bisa mengemudi.
  4. Saya tahu joging baik untuk saya, tetapi saya tidak joging di pagi hari.
Sering terjadi orang menganggap "Saya tahu" sebagai "Saya bisa". Ini adalah contoh yang baik dengan peraturan lalu lintas. Jika seseorang mengetahui peraturan dan tahu cara mengemudi, apakah itu berarti dia bisa mengemudi? Tidak. Bagaimana jika dia pikir dia tahu cara mengemudi? Jadi mengapa dia membutuhkan instruktur – dia sudah tahu segalanya. Ketika Anda yakin Anda sudah mengetahui segalanya, Anda mungkin tidak akan mempelajari sesuatu yang baru. Dan jika Anda yakin tahu bagaimana melakukan segalanya, Anda tidak akan belajar. Pikiran seperti ini bahkan tidak akan terlintas di benak Anda. Dan itu berarti Anda akan kehilangan semua kesempatan bagus untuk mempelajari sesuatu. Perguruan tinggi biasa hanya memberi Anda pengetahuan; Anda harus memperoleh keterampilan Anda sendiri. Tapi apa yang saya dengar? Anda sudah praktek selain teori di perguruan tinggi Anda? Ok, jika Anda belajar di fakultas fisika, buat model kerja mesin uap dengan efisiensi minimal 20%. Saya yakin Anda tahu bagaimana melakukannya, tetapi Anda tidak akan benar-benar dapat melakukannya, bukan? Anda seorang ahli kimia ? Buat bubuk tanpa asap. Kamu tahu caranya, tapi kamu tidak bisa, ha? Matematika, kamu? Hitung lintasan peluru artileri. Jangan lupa untuk memperhitungkan bentuk cangkangnya. Titik matematika tidak terbang dalam kehidupan nyata. Dan tidak ada kuda bulat. Tingkat Lama 09 - 2Ahli biologi? Isolasi penisilin. Kapang ini tumbuh di melon, begitu lho. Anda tahu caranya – luar biasa! Apakah Anda bisa? Ekonom?Membuat ramalan harga tumbuh pada minyak. Selesai? Dan sekarang ubah menjadi $2.000 atau $200.000 setahun berdasarkan perkiraan Anda. Apakah Anda pernah bermain di FOREX? Untuk uang sungguhan? Atau Anda hanya tahu apa itu? Ekonomi internasional? Bagus sekali! Di mana saya membuka perusahaan lepas pantai? Di Hong-Cong, Irlandia atau di AS. Mengapa? Bahkan jika Anda mengetahuinya, yang meragukan, Anda hampir tidak akan dapat melakukannya, karena Anda belum pernah benar-benar melakukannya. Anda bahkan tidak memiliki petunjuk sedikit pun bagaimana melakukannya. Oh, Anda tidak mempelajarinya di perguruan tinggi? Hak apa yang saya miliki untuk memberi Anda tugas yang tidak Anda siapkan? Karena ini adalah tugas kehidupan nyata. Praktik IS ini , semua yang Anda pelajari di perguruan tinggi adalah: kuda bulat, persaingan sempurna – tidak ada yang ada dalam kehidupan nyata. Tapi kenapa saya lupa menyebutkannyaspesialis pemasaran ? Apa cara terbaik untuk membelanjakan $500 saya agar sebanyak mungkin orang tahu tentang kuliah saya? Di iklan? Sadarkah Anda bahwa tidak hanya periklanan klasik yang sudah ketinggalan zaman, tetapi juga konsep USP (unique selling proposition), yang saya yakin diajarkan di perguruan tinggi sebagai obat mujarab yang hampir unik. Lupakan kamu tahu apa-apa. Tanyakan pada diri Anda - apa yang bisa saya lakukan? Berguna, maksud saya? Sesuatu yang akan dibayar orang dengan uang? Uang bagus, maksud saya? Jadi teman-teman, mari ucapkan terima kasih atas kursus yang luar biasa seperti CodeGym. Karena itu, Anda tidak hanya akan mengetahui cara memprogram, tetapi Anda benar-benar dapat melakukannya. Anda juga akan bisa mendapatkan pekerjaan dan menghasilkan banyak uang dalam beberapa tahun. Saya berharap uang ini akan cukup untuk hidup baik dan nyaman. Saya akan mengatakannya sekali lagi, jadi Anda ingat: tidak masalah apa yang Anda ketahui. Satu-satunya hal yang penting adalah keterampilan berguna apa yang Anda miliki, orang-orang yang ingin membayar Anda. Semakin cepat Anda memahami ini, semakin baik.

Anda telah mencapai level baru

Tingkat 9

Tingkat Lama 09 - 3

1 Risha, Jejak tumpukan

Tingkat Lama 09 - 4- Hai! Hari ini saya akan memberi tahu Anda apa itu jejak tumpukan. Tapi pertama-tama izinkan saya menjelaskan kepada Anda apa tumpukan itu. - Bayangkan setumpuk kertas - tugas untuk pegawai tertentu. Tugas baru dapat diletakkan di atas tumpukan, dan dia akan mengambil tugas dari atas tumpukan. Dengan demikian, penugasan akan dilakukan bukan pada yang pertama datang. Setiap kali petugas mengambil tugas yang datang terakhir. Struktur pengumpulan seperti itu disebut tumpukan . - Di Jawa, ada koleksi khusus - Stack. Koleksi ini memiliki metode «tambahkan elemen» dan «ambil(ambil/ambil) elemen». Seperti yang sudah Anda ketahui, elemen terakhir yang ditambahkan akan diambil terlebih dahulu. - Hum. Tidak sulit, kurasa. - Bagus. Lalu izinkan saya menjelaskan apa itu stack traceadalah. - Bayangkan bahwa di Java function А memanggil function B , dan yang terakhir memanggil function C , yang, pada gilirannya, memanggil function D . Jadi, untuk keluar dari fungsi B , Anda harus keluar dari fungsi C terlebih dahulu , dan untuk itu Anda harus keluar dari fungsi D . Ini sangat mirip dengan tumpukan. - Dan apa persamaannya? - Di stack, untuk mendapatkan tugas tertentu, kamu juga harus menyelesaikan semua tugas yang diletakkan di atas. - Nah, ini agak analogi, tapi saya tidak yakin apakah saya mengerti semuanya dengan benar. - Lihat disini. Di Jawa, tumpukan adalah sekumpulan elemen. Ini seperti lembaran kertas dalam tumpukan. Untuk mengambil lembar ketiga dari atas, Anda harus mengambil lembar kedua, tetapi sebelumnya Anda harus mengambil lembar pertama. Anda selalu dapat meletakkan dan mengambil lembaran, tetapi Anda hanya dapat meletakkannya di atas dan hanya mengambil dari atas. Hal yang sama berlaku untuk pemanggilan fungsi. Fungsi А memanggil fungsi B , yang terakhir memanggil fungsi C . Untuk keluar А , Anda harus terlebih dahulu keluar dari B , dan untuk melakukannya Anda harus keluar dari C . - Tunggu sebentar. Jika saya melakukannya dengan benar, seluruh tumpukan berubah menjadi «hanya lembar terakhir yang diletakkan di tumpukan yang dapat diambil» dan «pertama, fungsi yang terakhir dipanggil harus keluar». Apakah begitu? - Ya. Jadi, urutan pemanggilan fungsi adalah «tumpukan panggilan fungsi», atau sederhananya «tumpukan panggilan». Fungsi yang dipanggil terakhir harus diakhiri terlebih dahulu. Mari kita lihat contohnya: Tingkat Lama 09 - 5- Oke. Semuanya jelas dengan pemanggilan fungsi, kurasa. Tapi apa StackTraceElement ini ? - Mesin virtual Java mencatat semua panggilan fungsi. Untuk tujuan ini ia memiliki koleksi khusus - tumpukan. Saat satu fungsi memanggil yang lain, JVM menempatkan elemen baru StackTraceElement ke dalam tumpukan ini. Saat fungsi berakhir, elemen dihapus dari tumpukan. Dengan demikian, tumpukan ini selalu menyimpan informasi terbaru tentang status «tumpukan panggilan fungsi» saat ini. - Setiap StackTraceElementberisi informasi tentang metode yang dipanggil. Jadi Anda bisa mendapatkan nama metode ini menggunakan getMethodName . - Contoh di atas menunjukkannya:
  1. Dapatkan «tumpukan panggilan»:
  2. Iterasi array menggunakan loop for-each . Saya harap Anda tidak melupakannya.
  3. Cetak nama metode ke System.out .
- Suatu hal yang menarik, dan ternyata mudah. Terima kasih, Risha!

2 Diego, Tugas pada tampilan pelacakan tumpukan

- Hei, Amigo! Inilah tugas kecil untuk menampilkan jejak tumpukan ke layar.
Tugas
1 Setiap metode harus mengembalikan StackTrace
Write lima metode yang saling memanggil. Setiap metode harus mengembalikan StackTrace-nya.
2 StackTrace lagi
Tulis lima metode yang saling memanggil. Setiap metode harus mengembalikan nama metode pemanggilnya. Anda bisa mendapatkan metode pemanggil menggunakan StackTrace.
3 Metode ini harus mengembalikan nomor baris dari kode yang dipanggil dari metode ini
Tulis lima metode yang saling memanggil. Setiap metode harus mengembalikan nomor baris dari kode tempat metode ini dipanggil. Gunakan fungsi element.getLineNumber() .
4 Pelacakan tumpukan 10 panggilan
Tulis kode untuk mendapatkan pelacakan tumpukan 10 panggilan.
5 Metode harus mengembalikan hasil - kedalaman pelacakan tumpukannya
Tulis metode yang menampilkan dan mengembalikan kedalaman pelacakan tumpukannya. Kedalaman jejak tumpukan adalah jumlah metodenya (jumlah elemen dalam daftar).

3 Elly, Kesalahan dan Pengecualian

- Hei, Amigo! Hari ini kita memiliki pelajaran yang sangat menarik. Saya akan memberi tahu Anda tentang pengecualian. Pengecualian adalah mekanisme khusus untuk mengontrol kesalahan dalam program. Berikut adalah beberapa contoh kesalahan yang mungkin terjadi pada program:
  1. Program mencoba menulis file ke disk penuh.
  2. Program mencoba memanggil metode variabel yang menyimpan referensi nol.
  3. Program mencoba membagi angka dengan 0.
Tindakan ini menghasilkan kesalahan. Biasanya, ini mengarah pada penutupan program – tidak ada gunanya melanjutkan eksekusi kode. - Mengapa demikian? - Apakah ada gunanya memutar kemudi saat mobil jatuh dari tebing? - Apakah maksud Anda program harus diakhiri? - Ya. Begitulah sebelumnya. Setiap kesalahan menyebabkan penghentian program. - Ini keputusan yang sangat cerdas. - Bukankah lebih baik untuk mencoba mengerjakannya? - Ya. Anda mengetik teks besar di MS Word, menyimpannya, belum disimpan, tetapi program memberi tahu Anda bahwa semuanya baik-baik saja. Dan Anda terus mengetik. Konyol, bukan? - Ya. - Kemudian pemrogram membuat langkah yang menarik:setiap fungsi mengembalikan status pekerjaannya. 0 berarti fungsi berfungsi sebagaimana mestinya, nilai lain apa pun – bahwa ada kesalahan : nilai ini adalah kode kesalahan. - Tapi pendekatan ini memiliki kerugian. Setelah setiap pemanggilan fungsi (!), Anda harus memeriksa kode (angka) yang dikembalikan oleh fungsi tersebut. Pertama, itu merepotkan: kode penanganan kesalahan jarang dieksekusi, tetapi Anda harus selalu menulisnya. Kedua, fungsi itu sendiri sering mengembalikan nilai yang berbeda - apa yang harus dilakukan dengannya? - Ya. Itulah yang akan saya tanyakan. - Kemudian masa depan yang cerah datang - pengecualian dan penanganan kesalahan telah muncul. Begini cara kerjanya:
  1. Saat terjadi kesalahan, mesin virtual Java membuat objek khusus – pengecualian – yang berisi semua informasi tentang kesalahan tersebut. Untuk kesalahan yang berbeda ada pengecualian yang berbeda.
  2. Kemudian pengecualian ini memaksa program untuk segera menginterupsi fungsi saat ini, dan fungsi selanjutnya, hingga keluar dari metode utama. Setelah itu program berakhir. Pengembang Java menyebut proses ini «memutar kembali tumpukan panggilan».
- Tetapi Anda telah mengatakan bahwa program tersebut tidak akan keluar dengan pasti. - Itu benar, karena ada cara untuk menangkap pengecualian. Kapan pun dan di mana pun Anda membutuhkannya, Anda dapat menulis kode khusus untuk menangkap pengecualian ini dan melakukan sesuatu yang penting. - Untuk melakukan ini, ada try-catch konstruksi khusus . Lihat cara kerjanya: Tingkat Lama 09 - 6- Mengapa «Setelah pemanggilan metode1. Tidak akan pernah ditampilkan» tidak akan ditampilkan ke layar? - Saya senang Anda bertanya tentang hal itu. Di baris 25, ada pembagian dengan nol. Ini mengarah pada kesalahan - pengecualian. Mesin virtual Java membuat objek ArithmeticException yang berisi informasi kesalahan. Objek ini merupakan pengecualian. - Pengecualian terjadi di dalam metode method1() .Hal ini mengakibatkan penghentian segera metode tersebut. Itu juga akan menyebabkan penghentian metode main , jika tidak ada blok try-catch . - Jika exception terjadi di dalam blok try, maka akan ditangkap di blok catch . Kode yang tersisa di blok try tidak akan dieksekusi, eksekusi block catch akan segera dimulai. - Saya tidak begitu mengerti. - Dengan kata lain, kode ini bekerja seperti ini:
  1. Jika pengecualian terjadi di dalam blok coba , kode di blok ini tidak lagi dieksekusi, tetapi eksekusi tangkapan blok dimulai .
  2. Jika tidak ada pengecualian yang terjadi, blok try dieksekusi sampai akhir , dan catch tidak pernah dieksekusi .
- Ahem! - Bayangkan setelah setiap pemanggilan metode kita memeriksa apakah metode yang dipanggil dihentikan dengan sendirinya atau karena pengecualian. Jika ada pengecualian, JVM mulai menjalankan tangkapan blok jika tersedia, dan menangkap pengecualian. Jika tidak ada catch block, JVM menghentikan metode saat ini. Kemudian pemeriksaan yang sama dimulai pada metode yang disebut metode saat ini. - Sekarang saya pikir saya mendapatkannya. - Tidak apa-apa. - Dan apa itu Pengecualian di dalam blok tangkapan? - Semua pengecualian adalah kelas yang diwarisi dari kelas Pengecualian. Kita dapat menangkap salah satunya dengan menentukan kelasnya di tangkapanblok, atau semuanya sekaligus dengan menentukan Pengecualian kelas induk umum. Kemudian, dari variabel e (variabel ini menyimpan referensi objek pengecualian) Anda bisa mendapatkan semua informasi yang diperlukan tentang kesalahan tersebut. - Besar! Dan bagaimana jika dalam metode saya muncul pengecualian yang berbeda, bolehkah saya menanganinya dengan cara yang berbeda? - Kamu harus. Anda dapat melakukannya seperti ini: Tingkat Lama 09 - 7- Blok try mungkin berisi beberapa blok catch , yang masing-masing akan menangkap pengecualian dari jenisnya. - Umph. Yah, aku agak mengerti. Tentu saja, saya sendiri tidak akan menulis sesuatu seperti ini. Namun, saya tidak akan takut jika saya menemukan kode seperti itu.

4 Elly, RuntimeException, melempar

Tingkat Lama 09 - 8- Saya memutuskan untuk mengangkat topik lain hari ini. Di Jawa, semua pengecualian dibagi menjadi dua jenis – dikontrol/diperiksa dan tidak dikontrol/tidak dicentang . Pengecualian yang dicentang harus ditangkap, tidak dicentang dapat ditangkap tetapi itu tidak wajib . - Apakah mungkin untuk membuang pengecualian dalam kode dengan sengaja? - Dalam kode Anda, Anda dapat membuat sendiri pengecualian. Anda bahkan dapat menulis pengecualian Anda sendiri. Tapi kita akan jauh di dalam lubang ini nanti. Sekarang mari pelajari cara bekerja dengan pengecualian yang dilemparkan oleh mesin virtual Java. - OKE. - Jika pengecualian ClassNotFoundException dan FileNotFoundExceptiondilemparkan (muncul) dalam suatu metode, pemrogram harus menentukannya dalam tanda tangan suatu metode (header metode). Pengecualian seperti itu diperiksa. Seperti itulah biasanya: Tingkat Lama 09 - 9- Jadi, kami hanya menulis lemparan dan mencantumkan pengecualian yang dipisahkan dengan koma. Benar? Apakah begitu? - Ya. Tapi ada hal menarik lainnya. Agar contoh di bawah ini telah dikompilasi, metode yang memanggil method1() harus menangkap pengecualian ini atau melemparkannya ke depan. Jika Anda ingin melempar pengecualian yang diperiksa ke depan, Anda perlu menentukannya di header metode . - Sekali lagi, jika dalam metode utama , Anda ingin memanggil metode yang memiliki frase header melempar FileNotFoundException, …maka Anda harus melakukan salah satu dari dua hal ini:
  1. untuk menangkap pengecualian FileNotFoundException, …
    Anda harus membungkus kode tempat Anda memanggil metode berbahaya dengan blok coba-tangkap
  2. tidak menangkap pengecualian FileNotFoundException, …
Anda harus menambahkan pengecualian ini ke daftar lemparan dari metode Anda main . - Maukah Anda memberi saya contoh? - Lihat di sini: Tingkat Lama 09 - 10- Contoh ini tidak akan dikompilasi, karena metode main memanggil metode method1(), yang melempar pengecualian yang harus ditangkap. - Agar contoh dikompilasi, Anda perlu menambahkan penanganan pengecualian ke metode main . Anda dapat melakukannya dengan dua cara: Tingkat Lama 09 - 11- Dan di sini kami menangkapnya menggunakan try-catch : Tingkat Lama 09 - 12- Semakin jelas, tetapi sangat sedikit. - Perhatikan contoh di bawah ini: Tingkat Lama 09 - 13- Masih ada pengecualian – RuntimeException dan kelas yang diwarisi darinya.Tidak perlu menangkap atau membuangnya. Ini adalah pengecualian yang tidak dicentang. Pengecualian ini dianggap sulit diprediksi, jadi hampir tidak mungkin untuk memprediksi kemunculannya. Anda dapat melakukan hal yang sama dengan mereka, tetapi tidak perlu menentukannya di throws .

5 Risha, Memutar tumpukan panggilan, bagaimana melakukannya dalam pengecualian

- Saya ingin memberi tahu Anda lebih banyak tentang cara kerja pengecualian. Contoh di bawah menjelaskan bahwa: Tingkat Lama 09 - 14- Saya tidak mengerti. - Oke. Saya akan menjelaskan apa yang terjadi. - Pada contoh di sebelah kiri, kami memanggil beberapa metode dalam urutan berantai. Di method2() kami secara khusus membuat dan melempar pengecualian (untuk memulai kesalahan). - Contoh di sebelah kanan menunjukkan apa yang terjadi. Lihatlah method2() . Itulah yang mengubah pembuatan pengecualian: kami membuat objek bertipe RuntimeException , menyimpannya dalam pengecualian variabel khusus dan segera keluar dari metode – return . - Di method1 , setelah pemanggilan method2 ada tanda centang,apakah ada pengecualian atau tidak; jika ada pengecualian, maka metode1 segera dihentikan. Pemeriksaan ini dilakukan secara implisit setelah memanggil setiap (!) Metode Java. - Wow! - Tepat. - Di kolom sebelah kanan dalam metode utama saya menulis apa yang terjadi ketika pengecualian ditangkap oleh blok try-catch . Jika tidak ada pengecualian, kode terus dijalankan seperti yang direncanakan. Jika ada pengecualian dari tipe yang ditentukan di catch , maka kami akan menanganinya. - Dan apa arti dari throw dan instanceof ? - Lihat baris terakhir di sebelah kiri lempar RuntimeException baru. Dengan cara ini kami membuat dan melempar pengecualian. Ini hanya sebuah contoh. Kami tidak akan melakukannya sejauh ini. - Menggunakan perintah « а instanceof B » di blok kanan kami memeriksa apakah objek a bertipe B . Yaitu, apakah objek yang disimpan dalam pengecualian variabel, bertipe RuntimeException . Itu ekspresi logis. - Nah, ini menjadi sedikit lebih jelas.

6 Diego, tugas menangkap pengecualian

- Lihat disini! Paman Diego membawa sedikit tugas untuk menangkapmu. Semoga Anda beruntung. Saya pikir Anda akan membutuhkannya. Heh. Tingkat Lama 09 - 15- Hei, Amigo! Berikut adalah beberapa tugas menangkap pengecualian yang menarik.
Menangkap tugas
1 1. Pengecualian saat beroperasi dengan angka
Tangkap pengecualian yang terjadi saat menjalankan kode:
int a = 42 / 0;
Tampilkan pengecualian ke layar, tentukan jenisnya
2 2. Pengecualian saat beroperasi dengan string
Tangkap pengecualian yang terjadi saat menjalankan kode:
String s = null;
String m = s.toLowerCase();
Tampilkan pengecualian ke layar, tentukan jenisnya.
3 3. Pengecualian saat beroperasi dengan array
Tangkap pengecualian yang terjadi saat menjalankan kode:
int[] m = new int[2];
m[8] = 5;
Tampilkan pengecualian ke layar, tentukan jenisnya.
4 4. Pengecualian saat beroperasi dengan koleksi Daftar
Tangkap pengecualian yang terjadi saat menjalankan kode:
ArrayList<String> list = new ArrayList<String>();
String s = daftar.dapatkan(18);
Tampilkan pengecualian ke layar, tentukan jenisnya.
5 5. Pengecualian saat beroperasi dengan koleksi Peta
Tangkap pengecualian yang terjadi saat menjalankan kode:
HashMap<String, String> map = new HashMap<String, String>(null);
peta.put(null, null);
peta.hapus(null);
Tampilkan pengecualian ke layar, tentukan jenisnya.
- Tip: pertama tulis program, lalu lihat pengecualian apa yang terjadi dan setelah itu ubah kodenya dan tangkap pengecualian itu.

7 Risha, Cara kerja banyak tangkapan

Tingkat Lama 09 - 16- Sekarang, beberapa ceramah yang lebih menarik. Saya sangat suka mengajar. - Saya ingin memberi tahu Anda cara kerja beberapa tangkapan . Sebenarnya sangat sederhana: ketika pengecualian terjadi di blok try , eksekusi program ditransfer ke catch pertama . - Jika tipe yang ditetapkan dalam tanda kurung tangkapan blok sama dengan tipe objek pengecualian, maka eksekusi kode akan dimulai di dalam {}. Kalau tidak, kita pergi ke tangkapan berikutnya . Cek diulangi di sana. - Jika tidak ada lagi catch block, tetapi exception belum tertangkap, maka akan dilempar ke depan, dan metode saat ini diinterupsi. - Jadi begitu. Tangkapan itu akan dieksekusi, yang jenisnya cocok dengan jenis pengecualian. - Ya benar. Sebenarnya, ini sedikit lebih rumit: Intinya kelas-kelas itu bisa diwariskan satu sama lain. Jika kelas «Sapi» diwariskan dari kelas «Hewan», objek bertipe «Sapi» dapat disimpan tidak hanya dalam variabel bertipe «Sapi», tetapi juga dalam variabel bertipe «Hewan». . - Terus? - Karena semua pengecualian diwarisi dari kelas Exception atau RuntimeException (yang juga diwarisi dari Exception ), mereka semua dapat ditangkap menggunakan perintah catch (Exception e) atau catch (RuntimeException e) . - Terus? - Artinya,pertama, Anda dapat menangkap pengecualian apa pun menggunakan perintah catch(Exception e) . Kedua, urutan blok penangkap itu penting. Contoh: - ArithmeticException yang dihasilkan dari pembagian dengan 0 ditangkap di tangkapan kedua. Tingkat Lama 09 - 17- Pada contoh di bawah ini, ArithmeticException ditangkap di catch pertama , karena kelas dari semua exception diwariskan dari Exception. Jadi, Pengecualian menangkap pengecualian apa pun . Tingkat Lama 09 - 18- Pada contoh di bawah ini, pengecualian ArithmeticException tidak ditangkap, tetapi dilempar ke depan ke metode pemanggilan. Tingkat Lama 09 - 19- Nah, sekarang semakin jelas. Pengecualian ini tidak semudah itu. - Sepertinya begitu. Faktanya, ini adalah salah satu hal paling sederhana di Jawa. - Saya ragu apakah harus senang atau kesal karenanya…

8 Diego, beberapa tugas menangkap pengecualian

- Hei, Amigo! Kemarin saya mabuk dan terlalu memperumit tugas Anda, tetapi saya harap tidak ada perasaan sulit di pihak Anda dan Anda akan menyelesaikan semuanya? Itu untuk kebaikanmu sendiri. Di Sini:
Tugas
1 1. Pengecualian
Ada sebuah metode yang melontarkan dua pengecualian yang diwarisi dari Exception , dan dua lainnya diwarisi dari RuntimeException : NullPointerException , ArithmeticException , FileNotFoundException , dan URISyntaxException .

Anda perlu menangkap NullPointerException dan FileNotFoundException , tetapi tidak untuk menangkap ArithmeticException dan URISyntaxException . Bagaimana cara melakukannya?
2 2. Menangkap exception
Ada tiga exception yang diwariskan secara berurutan dari Exception :
class Exception1 extends Exception
class Exception2 extends Exception1
class Exception3 extends Exception2
Ada sebuah metode, yang dijelaskan sebagai berikut:
public static void method1() throws Exception1, Exception2, Exception3

Tulis tangkapan blok untuk menangkap ketiga Exception1 , Exception2 dan Exception3
3 3. Menangkap pengecualian selektif
1. Cari tahu pengecualian apa yang dilemparkan dengan metode BEAN.methodThrowExceptions .
2. Metode processExceptions() harus memanggil metode BEAN.methodThrowExceptions dan menangani pengecualian:
2.1. jika pengecualian FileSystemException terjadi, maka catatlah dengan memanggil metode BEAN.log dan lempar ke depan
2.2. jika pengecualian CharConversionException atau IOException lainnya terjadi, cukup catat dengan memanggil metode BEAN.log
3. Tambahkan kelas/jenis pengecualian yang Anda teruskan di 2.1. ke processExceptions()tanda tangan metode.
4. Tangani pengecualian yang tersisa di metode main() dan catat. Gunakan try..catch

Tip:
Jika Anda menangkap pengecualian MyException , yang tidak ingin Anda tangkap, Anda dapat melemparkannya ke depan menggunakan kode berikut:
catch (MyException e) {
throw e;
}
4 4. Menangkap pengecualian yang diperiksa
Tangani semua pengecualian yang diperiksa dalam metode processExceptions() .
Anda perlu menampilkan ke layar setiap pengecualian yang diperiksa yang telah terjadi.
Anda hanya dapat menggunakan satu blok try .
5 5. Menangkap pengecualian yang tidak dicentang
Tangani semua pengecualian yang tidak dicentang dalam metode processExceptions() .
Anda perlu menampilkan ke layar jejak tumpukan dari setiap pengecualian yang terjadi menggunakan metode printStack() .
Anda hanya dapat menggunakan satu blok try .

9 Profesor, Kuliah tentang pengecualian

- Hari ini kami memiliki topik yang sangat menarik - pengecualian. Pada saat ilmuwan dan pemrogram muda sangat bersemangat tentang topik ini… - Maaf, saya harus pergi ke lab. Berikut adalah catatan kuliah. Saya pikir Anda akan mengetahuinya sendiri. Di sini: Pengecualian Java (Dokumentasi Oracle) Penanganan Pengecualian di Jawa (titik Java T) Java - Penanganan Pengecualian (poin tutorial) Penanganan Pengecualian Java Dasar

10 Julio

- Amigo, apa pendapatmu tentang pelajaran hari ini? Apakah otak positron Anda belum bekerja? Tugas Diego cukup melelahkan siapa pun. Mari kita minum bir dan bersantai. Apakah kamu masih berdiri?

11 Kapten Tupai

- Halo, prajurit! - Selamat pagi Pak! - Saya punya berita luar biasa untuk Anda. Inilah pemeriksaan cepat untuk memperkuat keterampilan Anda. Lakukan setiap hari, dan Anda akan meningkatkan keterampilan Anda dengan sangat cepat. Tugas dirancang khusus untuk dilakukan di Intellij IDEA.
Tugas tambahan yang harus dilakukan di Intellij Idea
1 1. Pembagian dengan nol
Buat metode public static void divisionByZero() , di mana Anda perlu membagi angka apa pun dengan nol, dan menampilkan hasil pembagian ke layar.
Bungkus pemanggilan metode divisionByZero() menjadi try..catch . Tampilkan ke layar pelacakan tumpukan pengecualian menggunakan metode exception.printStackTrace() .
2 2. Hitung mundur dari 10 ke 0
Tulis satu putaran untuk menghitung mundur dari 10 ke 0. Gunakan Thread.sleep(100) untuk menunda;
Bungkus panggilan tidur menjadi try..catch .
3 3. Bungkus metode menjadi try..catch
Membaca angka dari keyboard. Tulis kode untuk membaca angka dari keyboard ke dalam metode terpisah readData() .
Bungkus seluruh tubuh metode ini (seluruh kode di dalam metode readData() , kecuali untuk deklarasi daftar tempat nomor akan disimpan) menjadi try..catch .

Jika pengguna memasukkan beberapa teks alih-alih memasukkan angka, metode harus menangkap pengecualian dan menampilkan ke layar semua angka yang dimasukkan sebelumnya.
Tampilkan nomor ke layar. Setiap nomor harus berada di baris baru. Urutan angka harus seperti yang ada di input.
4 4. Konverter tanggal
Baca dari keyboard tanggal dalam format «18/08/2013»
Tampilkan tanggal tersebut di layar dalam bentuk «18 Agustus 2013».
Gunakan objek Date dan SimpleDateFormat .
5 5. Vokal dan konsonan
Tulis program yang membaca baris dari keyboard.
Program harus menampilkan dua string ke layar:
1) string pertama harus berisi vokal
2) string kedua harus berisi konsonan dan karakter tanda baca dari teks yang dimasukkan.
Pisahkan karakter dengan spasi.

Contoh input:
Stop lihat dengar
Contoh output:
oooie
stplklstn
6 6. Kisah Si Kecil Berkerudung Merah
1. Ada lima kelas: Red Riding Hood, nenek, patty, penebang kayu, serigala.
2. Setiap kelas memiliki dua bidang tipe ArrayList : dibunuh dan dimakan.
3. Benda-benda yang diperlukan sudah dibuat (kap mesin, nenek, ...).
4. Ciptakan hubungan yang benar (siapa yang memakan dan membunuh siapa) untuk mendapatkan logika dari «Little Red Riding Hood».
7 7. Pindahkan modifikasi statis
Pindahkan pengubah statis agar kode dapat dikompilasi.
8 8. Daftar larik angka
Buat daftar yang elemennya adalah larik angka. Tambahkan ke daftar lima larik objek dengan panjang masing-masing 5, 2, 4, 7, 0. Isi array dengan data apa pun dan tampilkan di layar.
9 9. Sepuluh kucing
Buat kelas Cat dengan field String name .
Buat kamus Map<String, Cat> , tambahkan 10 kucing pada model «Nama» - «Kucing».
Dapatkan dari Peta satu Set nama dan tampilkan set ke layar.
- Tugas itu untuk sayuran. Saya menambahkan tugas bonus dengan kompleksitas lebih tinggi. Hanya untuk senjata top.
Tugas bonus
1 1. Program tidak dapat dikompilasi dan dijalankan. Memperbaikinya.
Tugas: Program harus membaca dari keyboard dua nama file dan menyalin file pertama ke lokasi yang ditentukan oleh nama kedua.
2 2. Tambahkan fungsionalitas baru ke program.
Tugas Lama: Program harus membaca dari keyboard dua nama file dan menyalin file pertama ke lokasi yang ditentukan oleh nama kedua.
Tugas baru: Program harus membaca dari keyboard dua nama file dan menyalin file pertama ke lokasi yang ditentukan oleh nama kedua.

Jika file (yang akan disalin) dengan nama yang ditentukan tidak ada, program akan menampilkan pesan «File tidak ada» di layar dan mencoba membaca nama file dari konsol sekali lagi sebelum membaca nama file kedua (tujuan).
3 3. Belajar dan berlatih algoritma.
Baca dari keyboard daftar kata dan angka. Tampilkan ke layar kata-kata dalam urutan menaik dan angka dalam urutan menurun.

Contoh masukan:
Ceri
1
Kacang
3
Apel
2
0
Semangka

Contoh keluaran:
Apel
3
Kacang
2
Ceri
1
0
Semangka
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION