Blok 'finally'
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 41 dari 65.
Terkadang kamu memerlukan kode yang tetap dijalankan apa pun yang terjadi di blok try-catch. Blok finally memiliki tujuan khusus ini: blok tersebut berisi kode yang selalu dijalankan, baik terjadi pengecualian maupun tidak.
Blok finally muncul setelah blok try dan catch. Meskipun kodemu berhasil dijalankan di bagian try, atau jika pengecualian tertangkap dan ditangani, blok finally tetap akan dijalankan.
try {
// Kode yang mungkin menyebabkan pengecualian
int result = 10 ~/ 2;
print("Result: $result");
} catch (e) {
print("An error occurred: $e");
} finally {
print("This always runs!");
}Hal ini membuat blok finally sangat cocok untuk operasi pembersihan, seperti menutup file, melepaskan resource, atau mencatat bahwa suatu operasi telah selesai. Apa pun yang terjadi dalam penanganan error-mu, kamu dapat memastikan bahwa kode tertentu akan selalu dijalankan.
Tantangan
MudahBuat program yang mendemonstrasikan blok finally dengan menerapkan simulator pemrosesan file yang selalu menjalankan operasi pembersihan, terlepas dari apakah terjadi error selama pemrosesan.
- Baca input string yang mewakili nama file yang akan diproses
- Baca input string yang mewakili konten file
- Baca input string yang mewakili apakah error akan disimulasikan (
"error"atau"success") - Gunakan struktur
try-catch-finallyuntuk menyimulasikan pemrosesan file: - Di blok
try: Periksa apakah simulasi error bernilai"error"dan lempar exception dengan pesan"File processing failed"jika benar, jika tidak, proses file dengan sukses - Di blok
catch: Tangani exception apa pun yang terjadi selama pemrosesan - Di blok
finally: Selalu lakukan operasi pembersihan, terlepas dari keberhasilan atau kegagalan - Tampilkan hasil pemrosesan dalam format persis seperti yang ditunjukkan di bawah ini
Misalnya, jika inputnya adalah "document.txt", "Hello World", "success", programmu harus menghasilkan:
File Processing System
======================
Opening file: document.txt
File content: Hello World
Processing file successfully...
File processed: 11 characters found
Cleanup: Closing file handles
Cleanup: Releasing memory resources
Cleanup: Logging operation completion
Processing completed successfullyJika inputnya adalah "report.pdf", "Annual Report Data", "error", programmu harus menghasilkan:
File Processing System
======================
Opening file: report.pdf
File content: Annual Report Data
Error occurred: File processing failed
Unable to complete file processing
Cleanup: Closing file handles
Cleanup: Releasing memory resources
Cleanup: Logging operation completion
Processing completed with errorsJika inputnya adalah "config.json", "{\"setting\": \"value\"}", "success", programmu harus menghasilkan:
File Processing System
======================
Opening file: config.json
File content: {"setting": "value"}
Processing file successfully...
File processed: 20 characters found
Cleanup: Closing file handles
Cleanup: Releasing memory resources
Cleanup: Logging operation completion
Processing completed successfullyProgrammu harus menggunakan struktur try-catch-finally dengan blok finally yang selalu menjalankan tiga operasi pembersihan dalam urutan persis seperti yang ditunjukkan. Di blok try, periksa apakah input simulasi error sama dengan "error" dan lempar exception jika benar. Jika tidak ada error yang disimulasikan, hitung jumlah karakter dalam konten file menggunakan property length. Blok finally harus selalu menampilkan pesan pembersihan dan menentukan status penyelesaian akhir berdasarkan apakah terjadi error.
Coba sendiri
import 'dart:io';
void main() {
// Baca input
String? filename = stdin.readLineSync();
String? content = stdin.readLineSync();
String? errorSimulation = stdin.readLineSync();
// Tampilkan header sistem
print("File Processing System");
print("======================");
print("Opening file: $filename");
print("File content: $content");
// TODO: Tulis kodemu di bawah ini
// Gunakan struktur try-catch-finally untuk menyimulasikan pemrosesan file
// - Dalam blok try: periksa apakah errorSimulation sama dengan "error" dan lempar pengecualian jika benar
// - Dalam blok catch: tangani pengecualian apa pun
// - Dalam blok finally: selalu lakukan pembersihan
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Manipulasi list Tingkat Lanjut
Properti list: first dan lastStatus list: isEmpty dan isNotEmpMembalikkan listMenambahkan ke list: insertMenghapus dari list: removeWhereMencari dalam list: indexOfMengurutkan listMengacak listRekap: Pengatur list4Manipulasi Map Lanjutan
Melakukan perulangan pada MapMemeriksa kunci dan nilaiProperti Map: kunci dan nilaiPenambahan Bersyarat: putIfAbsentMenghapus Entri dari MapMap BersarangRingkasan: Pembaruan Inventaris2Operasi Fungsional pada list
Mengubah dengan 'map'Menyaring dengan 'where'Menggunakan '.toList()'Memeriksa Kondisi dengan 'any'Kondisi dengan 'every'Menemukan dengan 'firstWhere'Ulasan: Penyaringan Data5Proyek: Perhitungan Keranjang Belanja
Menyiapkan ProyekMenambahkan Barang ke Keranjang3set
Apa itu set?Membuat setMenambahkan dan menghapus elemen dari setMemeriksa elemen dalam setMengubah list menjadi setGabungan setIrisan setSelisih setRangkuman: Daftar tamu unik6Penanganan Error Dasar
Apa Itu Pengecualian?Blok 'try-catch'Menangkap Pengecualian dengan 'on'Blok 'finally'Melempar PengecualianRingkasan: Pembagian AmanLatihan sendiri: Compiler Dart online