Compartir a través de


Cómo usar el bloque try/catch para detectar excepciones

Coloque las instrucciones de código que puedan generar o producir una excepción en un try bloque y coloque instrucciones usadas para controlar la excepción o las excepciones en uno o varios catch bloques debajo del try bloque. Cada catch bloque incluye el tipo de excepción y puede contener instrucciones adicionales necesarias para controlar ese tipo de excepción.

En el ejemplo siguiente, se StreamReader abre un archivo denominado data.txt y se recupera una línea de él. Dado que el código puede producir cualquiera de las tres excepciones, se coloca en un try bloque . Tres catch bloques detectan las excepciones y las controlan mostrando los resultados en la consola.

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) detecta excepciones no controladas por catch bloques. Si CLR detecta una excepción, puede producirse uno de los siguientes resultados en función de la configuración de CLR:

  • Aparece un cuadro de diálogo Depurar .
  • El programa detiene la ejecución y aparece un cuadro de diálogo con información de excepción.
  • Un error se imprime en el flujo de salida de error estándar.

Nota:

La mayoría del código puede lanzar una excepción y algunas excepciones, como OutOfMemoryException, pueden ser lanzadas por el CLR en cualquier momento. Aunque las aplicaciones no son necesarias para tratar estas excepciones, tenga en cuenta la posibilidad de escribir bibliotecas que otros usuarios usen. Para obtener sugerencias sobre cuándo establecer código en un try bloque, consulte Procedimientos recomendados para excepciones.

Consulte también