Cara menggunakan blok coba/tangkapuntuk menangkap pengecualian
Tempatkan pernyataan kode apa pun yang mungkin menaikkan atau melempar pengecualian di blok try
, dan tempatkan pernyataan yang digunakan untuk menangani pengecualian atau pengecualian dalam satu atau beberapa blok catch
di bawah blok try
. Setiap blok catch
mencakup jenis pengecualian dan dapat berisi pernyataan tambahan yang diperlukan untuk menangani jenis pengecualian tersebut.
Dalam contoh berikut, StreamReader membuka file yang disebut data.txt dan mengambil baris dari file. Karena kode mungkin melemparkan salah satu dari tiga pengecualian, kode ditempatkan dalam blok try
. Tiga blok catch
menangkap pengecualian dan menanganinya dengan menampilkan hasilnya ke konsol.
using namespace System;
using namespace System::IO;
public ref class ProcessFile
{
public:
static void Main()
{
try
{
StreamReader^ sr = File::OpenText("data.txt");
Console::WriteLine("The first line of this file is {0}", sr->ReadLine());
sr->Close();
}
catch (Exception^ e)
{
Console::WriteLine("An error occurred: '{0}'", e);
}
}
};
int main()
{
ProcessFile::Main();
}
using System;
using System.IO;
public class ProcessFile
{
public static void Main()
{
try
{
using (StreamReader sr = File.OpenText("data.txt"))
{
Console.WriteLine($"The first line of this file is {sr.ReadLine()}");
}
}
catch (FileNotFoundException e)
{
Console.WriteLine($"The file was not found: '{e}'");
}
catch (DirectoryNotFoundException e)
{
Console.WriteLine($"The directory was not found: '{e}'");
}
catch (IOException e)
{
Console.WriteLine($"The file could not be opened: '{e}'");
}
}
}
Imports System.IO
Public Class ProcessFile
Public Shared Sub Main()
Try
Using sr As StreamReader = File.OpenText("data.txt")
Console.WriteLine($"The first line of this file is {sr.ReadLine()}")
End Using
Catch e As FileNotFoundException
Console.WriteLine($"The file was not found: '{e}'")
Catch e As DirectoryNotFoundException
Console.WriteLine($"The directory was not found: '{e}'")
Catch e As IOException
Console.WriteLine($"The file could not be opened: '{e}'")
End Try
End Sub
End Class
Runtime Bahasa Umum (CLR) menangkap pengecualian yang tidak ditangani oleh blok catch
. Jika pengecualian tertangkap oleh CLR, salah satu hasil berikut dapat terjadi tergantung pada konfigurasi CLR Anda:
- Kotak dialog Debug muncul.
- Program menghentikan eksekusi dan kotak dialog dengan informasi pengecualian muncul.
- Kesalahan dicetak ke aliran output kesalahan standar.
Catatan
Sebagian besar kode dapat melemparkan pengecualian, dan beberapa pengecualian, seperti OutOfMemoryException, dapat dilemparkan oleh CLR itu sendiri kapan saja. Meskipun aplikasi tidak diperlukan untuk menangani pengecualian ini, waspadai kemungkinan saat menulis perpustakaan untuk digunakan oleh orang lain. Untuk saran tentang kapan harus mengatur kode dalam blok try
, lihat Praktik Terbaik untuk Pengecualian.
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk