try/catch/finally, throw new vs lempar ulang
Gunakan try/catch/finally untuk penanganan kesalahan yang dapat diprediksi; pahami throw new dan lempar ulang; buat contoh tetap kecil dan terarah.
try/catch/finally, throw new vs lempar ulang adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 3 pelajaran total.
Ikhtisar pengecualian
Tujuan: Tangani dan teruskan kesalahan dengan aman.
- try/catch: tangani pengecualian tertentu
- finally: selalu dijalankan untuk pembersihan
- throw new vs rethrow
- Jaga agar penangan tetap singkat; jangan menyembunyikan bug
Penangkapan tertentu
Tangkap pengecualian yang paling spesifik yang Anda harapkan; jaga agar penangan tetap singkat dan jelas.
using System;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Start");
try
{
int x = 10;
int y = 0; // will cause DivideByZeroException
Console.WriteLine(x / y);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Cannot divide by zero: " + ex.GetType().Name);
}
Console.WriteLine("Continue");
}
}
Urutan penangkapan
Urutan penting: tempatkan penangkapan yang spesifik terlebih dahulu, lalu penangkapan Exception umum terakhir sebagai jaring pengaman.
using System;
public class Program
{
static int ParseAndDivide(string text, int divisor)
{
// Throws FormatException or DivideByZeroException
int value = int.Parse(text);
return value / divisor;
}
public static void Main(string[] args)
{
try
{
Console.WriteLine(ParseAndDivide("not-a-number", 2));
}
catch (FormatException)
{
Console.WriteLine("Bad number format");
}
catch (Exception ex)
{
// Fallback last
Console.WriteLine("Other error: " + ex.GetType().Name);
}
}
}
finally untuk pembersihan
Tempatkan pembersihan di dalam finally. Bagian ini dijalankan baik terjadi pengecualian maupun tidak.
using System;
public class Program
{
static bool opened = false;
static void UseFakeResource()
{
try
{
opened = true;
Console.WriteLine("Open");
throw new InvalidOperationException("boom");
}
catch (InvalidOperationException)
{
Console.WriteLine("Handled");
}
finally
{
opened = false; // cleanup path
Console.WriteLine("Close");
}
}
public static void Main(string[] args)
{
UseFakeResource();
Console.WriteLine("Opened? " + opened);
}
}
Lakukan rethrow dengan benar
Gunakan throw; untuk melakukan rethrow dan mempertahankan tumpukan asli. throw ex; akan meresetnya. Bungkus dengan pengecualian baru hanya jika Anda menambahkan konteks.
using System;
public class Program
{
static void BadRethrow()
{
try
{
Fail();
}
catch (Exception ex)
{
// Resets stack trace:
throw ex; // BAD rethrow
}
}
static void GoodRethrow()
{
try
{
Fail();
}
catch
{
// Preserves original stack trace:
throw; // GOOD rethrow
}
}
static void Fail()
{
throw new InvalidOperationException("fail");
}
public static void Main(string[] args)
{
try { BadRethrow(); }
catch (Exception ex)
{
Console.WriteLine("Bad: " + (ex.StackTrace == null ? "no stack" : "stack reset likely"));
}
try { GoodRethrow(); }
catch (Exception ex)
{
Console.WriteLine("Good: preserves original stack");
}
}
}
Panduan penanganan
Panduan:
- Tangkap pengecualian jika Anda dapat menanganinya atau menambahkan konteks.
- Jika tidak, biarkan pengecualian diteruskan ke atas.
- Jaga agar penangan tetap kecil; hindari menelan pengecualian secara diam-diam.
- Gunakan finally untuk pembersihan; pembuangan sumber daya dibahas pada pelajaran berikutnya.
Aturan rethrow
Ringkasan
Ringkasan: Gunakan try/catch untuk kesalahan tertentu, finally untuk pembersihan, dan utamakan throw; saat melakukan rethrow agar tumpukan asli tetap dipertahankan.
Belajar C# dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 93
- Pelajaran
- 346
Pertanyaan yang Sering Diajukan
Apakah pelajaran “try/catch/finally, throw new vs lempar ulang” gratis?
Ya — teks lengkap “try/catch/finally, throw new vs lempar ulang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “try/catch/finally, throw new vs lempar ulang”?
Gunakan try/catch/finally untuk penanganan kesalahan yang dapat diprediksi; pahami throw new dan lempar ulang; buat contoh tetap kecil dan terarah. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.
Berapa lama pelajaran “try/catch/finally, throw new vs lempar ulang” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- try/catch/finally, throw new vs lempar ulang
- Pengecualian khusus; perancangan kesalahan
- IDisposable, pernyataan using