Using vs. Try-Finally
Termasuk bagian Logika dan Alur dalam perjalanan C# di Coddy. Pelajaran 28 dari 66.
Baik pernyataan using maupun blok try-finally membantu mengelola resource yang perlu dibersihkan dengan benar. Pernyataan using menyediakan cara yang lebih rapi dan ringkas untuk memastikan object IDisposable dibersihkan dengan benar.
Catatan: using menggantikan pola try-finally untuk pembersihan resource. Namun, using tidak menggantikan try-catch. Kamu tetap bisa membungkus blok using di dalam try-catch untuk menangani exception.
Mari kita lihat pendekatan try-finally terlebih dahulu:
StreamReader reader = null;
try
{
reader = new StreamReader("file.txt");
string content = reader.ReadToEnd();
Console.WriteLine(content);
}
finally
{
if (reader != null)
{
reader.Dispose();
}
}
Pernyataan using menyederhanakan kode ini:
using (StreamReader reader = new StreamReader("file.txt"))
{
string content = reader.ReadToEnd();
Console.WriteLine(content);
}
Pernyataan using otomatis memanggil Dispose() saat keluar dari blok, bahkan jika terjadi exception.
Apa itu StreamReader?StreamReader adalah class yang digunakan untuk membaca teks dari file. Kamu membuatnya dengan memberikan nama file, lalu class ini membuka file untuk dibaca. Class ini mengimplementasikan IDisposable, jadi harus ditutup dengan benar setelah digunakan. Hal ini ditangani oleh using.
Beberapa method umum StreamReader:
ReadToEnd(): membaca seluruh file sebagai satu stringReadLine(): membaca satu baris setiap kali, mengembalikannullsaat mencapai akhir file
Untuk menghitung baris dalam sebuah file, kamu bisa menggunakan perulangan ReadLine():
using (StreamReader reader = new StreamReader("file.txt"))
{
int lineCount = 0;
while (reader.ReadLine() != null)
{
lineCount++;
}
Console.WriteLine(lineCount);
}
Kamu juga bisa menggabungkan using dengan try-catch untuk menangani exception seperti file yang hilang:
try
{
using (StreamReader reader = new StreamReader("file.txt"))
{
int lineCount = 0;
while (reader.ReadLine() != null)
{
lineCount++;
}
Console.WriteLine(lineCount);
}
}
catch (FileNotFoundException)
{
Console.WriteLine("File not found");
}
Tantangan
MudahBuat method bernama processFile yang:
- Menerima nama file sebagai parameter string
- Menggunakan pernyataan
usingdenganStreamReaderuntuk membaca semua baris dari file - Mengembalikan jumlah baris dalam file
- Jika terjadi
FileNotFoundException, cetak "File not found" dan kembalikan -1
Coba sendiri
using System;
using System.IO;
class ProcessFile
{
public static int processFile(string filename)
{
// Tulis kodemu di sini
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1array Multidimensi
Dasar-Dasar array 2DMendeklarasikan dan Menginisialisasi array 2DMengakses Elemen array 2DPerulangan Bersarang dengan array 2Darray BergerigiOperasi Matriks UmumRangkuman: array Multidimensi4Teknik Alur Kontrol
Pengembalian DiniKlausa PenjagaPernyataan Lompatan (goto)Break dan ContinueMeratakan Percabangan Bersarang7Operator Logika Lanjutan
Evaluasi Hubung SingkatOperator Logika PercabanganPrioritas OperatorRingkasan Operator Lanjutan2Pengambilan Keputusan Tingkat Lanjut
Beberapa KondisiLogika Boolean yang KompleksPerbandingan If dan SwitchPernyataan Switch BersarangUlasan: Pengambilan Keputusan Tingkat Lanjut5Penanganan Exception
Dasar Try-CatchJenis ExceptionBeberapa Blok CatchBekerja dengan fileBlok FinallyUsing vs. Try-FinallyException KustomRingkasan: Penanganan error3Peningkatan Loop
Performa LoopIterasi yang KompleksSetiap Jenis LoopRefactoring LoopRangkuman: Loop yang Dioptimalkan6Penanganan Null
Dasar Referensi NullTipe Nilai NullablePola Pemeriksaan NullPemrograman DefensifRingkasan: Keamanan NullLatihan sendiri: Compiler C# online