Video: How to use the Smithing Table? - Infinite Diamond, Minecraft Village and Pillage (Bedrock Edition) 2024
Bayangkan sebuah program Java yang mendapat masukan dari dua file yang berbeda atau dari
Scanner
dan sebuah disk mengajukan. Untuk memastikan bahwa Anda membersihkan dengan benar, Anda meletakkan
close
metode panggilan di
akhirnya
klausa.
impor java io. Mengajukan;
impor java io. IOException;
impor java util. Pemindai;
kelas umum Utama {
public static void main (String args []) {
Scanner scan1 = null;
Scanner scan2 = null;
coba {
scan1 = new Scanner (File baru ("File1. Txt"));
scan2 = new Scanner (File baru ("File2.txt"));
// Apakah hal-hal yang berguna
} menangkap (IOException e) {
// Oops!
} akhirnya {
scan1. dekat();
scan2. dekat();
Sistem di luar. println ("Selesai!");
}
}
}
Secara teori, komputer selalu menjalankan
scan1. close ()
dan
scan2. close ()
tidak masalah apa yang salah selama eksekusi klausa
try
. Tapi itu teori. Pada kenyataannya, programmer lain (bukan Anda, tentu saja) dapat memodifikasi kode dengan menutup
scan1
di tengah klausa
try
:
coba {
scan1 = new Scanner (file baru ("File1. Txt"));
scan2 = new Scanner (File baru ("File2.txt"));
// lakukan hal yang berguna tapi juga …
scan1. dekat();
scan1 = null;
} menangkap (IOException e) {
// Ups!
} akhirnya {
scan1. dekat();
scan2. dekat();
Sistem di luar. println ("Selesai!");
}
Sekarang Anda memiliki keadaan yang nyata. Di dalam klausa
akhirnya
, nilai
scan1
adalah
null
. Panggilan untuk
scan1. close ()
gagal, jadi program tersebut membuang
NullPointerException
dan berhenti berjalan sebelum mencapai panggilan ke
scan2. dekat ()
. Dalam keadaan terburuk,
scan2
tidak ditutup dan program Anda memiliki
File2. txt
dikunci sehingga tidak ada program lain yang bisa menggunakan file tersebut.
Bila sebuah program menggunakan beberapa sumber (banyak file, database dan file, atau apapun), pernyataan
mencoba
menjadi sangat rumit. Anda bisa membuat
mencoba
pernyataan dalam klausul
menangkap
dan segala macam kombinasi gila. Tapi Java memiliki cara yang lebih baik untuk memecahkan masalah: Di Java 7 (dan versi Java yang lebih baru), Anda dapat membuat try-with-resources statement. Kode ini menunjukkan caranya.
import java. io. Mengajukan;
impor java io. IOException;
impor java util. Pemindai;
public class NewMain {
public static void main (String args []) {
coba (Scanner scan1 = new Scanner (File baru ("File1.txt "));
Scanner scan2 = new Scanner (File baru (" File2. txt "))) {
// lakukan hal-hal yang berguna
} catch (IOException e) {
// Oops Kode dalam, deklarasi
scan1
dan
.
Dalam kode ini, deklarasi
scan1
dan
scan2
berada dalam tanda kurung setelah kata
mencoba
Deklarasi tanda kurung memberitahu Java untuk menutup
scan1
dan
scan2
secara otomatis setelah eksekusi pernyataan di > coba klausa
Anda dapat mendeklarasikan beberapa sumber dalam satu tanda kurung
coba
Bila Anda melakukannya, Java menutup semua sumber secara otomatis setelah eksekusi
mencoba
klausul pernyataan. tambahkan klausa
catch
dan klausa
akhirnya
, jika Anda mau, Anda dapat mengakses semua jenis sumber daya (file, database, koneksi ke server, dan lainnya) dan merasa tenang mengetahui Jawa akan memutuskan koneksi secara otomatis.
Hidup itu baik.