Exceptions and Exception Handling
Fitur exception handling pada bahasa C# akan membantumu berurusan dengan situasi yang tidak terduga (unexpected) atau situasi yang istimewa (exceptional) yang terjadi ketika program berjalan. Exception handling menggunakan keyword try, catch, dan finally untuk 'mencoba' (try) suatu aksi yang mungkin tidak berhasil, untuk menangani (handle) kesalahan ketika kamu pikir itu hal yang tepat untuk dilakukan, dan untuk membersihkan sumber daya setelahnya. Exception dapat di hasilkan oleh common language runtime (CLR), oleh .NET, library pihak ketiga, ataupun kode aplikasi. Exception dibuat menggunakan keyword throw.
Di berbagai kasus, sebuah exception mungkin akan di 'lempar' (thrown) bukan dari method yang dipanggil oleh kodemu secara langsung, tetapi dari method lain jauh di dalam call stack. Ketika suatu exception di throw, CLR akan melepaskan stack, dan mencari suatu tipe exception dalam method dengan block catch, lalu ia akan mengeksekusi block catch pertama yang sesuai yang ia temukan. Jika ia tidak dapat menemukan catch block yang sesuai di manapun dalam call stack, ia akan mengakhiri proses dan menampilkan pesan ke user.
Pada contoh berikut, sebuah method menguji pembagian dengan nol dan 'menangkap' (catch) error nya. Tanpa exception handling, program ini akan berakhir dengan error DivideByZeroException was unhandled.
public class ExceptionTest
{
static double SafeDivision(double x, double y)
{
if (y == 0)
throw new DivideByZeroException();
return x / y;
}
public static void Main()
{
// Input untuk uji coba. Ganti nilai untuk melihat
// perilaku exception handling.
double a = 98, b = 0;
double result;
try
{
result = SafeDivision(a, b);
Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
}
catch (DivideByZeroException)
{
Console.WriteLine("Attempted divide by zero.");
}
}
}Gambaran Umum
Exception memiliki ciri sebagai berikut:
Exception adalah tipe yang pada akhirnya diturunkan dari
System.ExceptionGunakan block
trydisekitar statement yang mungkin akan melemparkan exception.Ketika sebuah exception terjadi dalam block try, aliran kontrol akan melompat ke exception handler yang sesuai pertama yang ada dimanapun dalam call stack. Di C#, keyword
catchdigunakan untuk mendefinisikan exception handler.Jika tidak ada exception handler untuk exception yang diberikan, program akan berhenti dan menampilkan pesan error.
Jangan tankap (catch) exception kecuali memang kamu dapat menanganinya dan mengembalikan aplikasi ke kondisi yang diketahui. Jika kamu menangkap
System.Exception, lempar kembali menggunakan keywordthrowdi akhir blockcatch.Jika suatu
catchblock mendefinisikan sebuah variable exception, kamu dapat menggunakannya untuk mengambil lebih banyak informasi dari suatu tipe exception yang terjadi.Exception dapat secara eksplisit dihasilkan oleh program menggunakan keyword
throwObjek exception berisi informasi mendetail mengenai error, seperti keadaan dari call stack dan text deskripsi dari error.
Kode dalam block
finallyakan dieksekusi tanpa memedulikan apakah ada exception yang dilempar. Gunakan blockfinallyuntuk melepaskan sumber daya, contohnya menutup stream apa pun atau files yang dibuka dalam blocktry.
C# Language Specification
Untuk informasi lebih lanjut, lihat Exceptions di C# Language Specification
Last updated