Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Buat program yang mendemonstrasikan blok finally dengan menerapkan simulator pemrosesan file yang selalu menjalankan operasi pembersihan, terlepas dari apakah terjadi error selama pemrosesan.

  1. Baca input string yang mewakili nama file yang akan diproses
  2. Baca input string yang mewakili konten file
  3. Baca input string yang mewakili apakah error akan disimulasikan ("error" atau "success")
  4. Gunakan struktur try-catch-finally untuk 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
  5. 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 successfully

Jika 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 errors

Jika 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 successfully

Programmu 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
  
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online