Bagikan melalui


Cara menggunakan blok coba/tangkap untuk menangkap pengecualian

Tempatkan pernyataan kode apa pun yang mungkin menimbulkan atau melemparkan pengecualian dalam blok try, dan tempatkan pernyataan yang digunakan untuk menangani pengecualian dalam satu atau beberapa blok catch di bawah blok try. Setiap catch blok 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 melempar salah satu dari tiga pengecualian, kode tersebut ditempatkan dalam blok try . Tiga catch blok menangkap pengecualian dan menanganinya dengan menampilkan hasilnya ke konsol.

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

Common Language Runtime (CLR) menangkap pengecualian yang tidak ditangani oleh blok catch. Jika pengecualian ditangkap 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.
  • Pesan kesalahan dicetak ke aliran keluaran kesalahan standar.

Nota

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, ketahui kemungkinan saat menulis pustaka untuk digunakan oleh orang lain. Untuk saran tentang kapan harus mengatur kode dalam try blok, lihat Praktik Terbaik untuk Pengecualian.

Lihat juga