Menu
Coddy logo textTech

Tipi di eccezione

Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 24 di 66.

In C#, le eccezioni sono suddivise in diversi tipi in base all'errore che rappresentano. Comprendere questi tipi ti aiuta a gestire gli errori in modo più efficace.

Esaminiamo i tipi di eccezione comuni:

La classe base per tutte le eccezioni è System.Exception.

try
{
    // Codice che potrebbe generare un'eccezione
}
catch (Exception ex)
{
    // Gestisci qualsiasi eccezione
    Console.WriteLine(ex.Message);
}

Alcuni tipi di eccezione comuni:

ArgumentException: generata quando un metodo viene chiamato con un argomento non valido.

string name = null;
if (name == null)
{
    throw new ArgumentException("Name cannot be null");
}

NullReferenceException: generata quando provi ad accedere a un membro tramite un riferimento null.

string text = null;
// Questo genererà NullReferenceException
int length = text.Length;

IndexOutOfRangeException: Generata quando un indice dell'array è al di fuori dei limiti dell'array.

int[] numbers = { 1, 2, 3 };
// Questo genererà un'eccezione IndexOutOfRangeException
int value = numbers[5];

DivideByZeroException: Viene generata quando si divide un numero intero per zero.

int result = 10 / 0; // Questo genererà DivideByZeroException

Puoi intercettare eccezioni specifiche:

try
{
    int[] numbers = { 1, 2, 3 };
    int value = numbers[5];
}
catch (IndexOutOfRangeException ex)
{
    Console.WriteLine("Array index error: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("General error: " + ex.Message);
}
challenge icon

Sfida

Facile

Crea un metodo chiamato ProcessArray che:

  1. Prenda un array di interi e un indice come parametri
  2. Provi ad accedere all'elemento all'indice specificato
  3. Restituisca il valore dell'elemento in caso di successo
  4. Se si verifica un'eccezione IndexOutOfRangeException, intercettala e restituisci -1

Il tuo metodo dovrebbe avere questa firma:

public static int ProcessArray(int[] array, int index)

Provalo tu

using System;

class Program
{
    public static int ProcessArray(int[] array, int index)
    {
        // Scrivi qui il tuo codice
        return 0;
    }

    static void Main(string[] args)
    {
        // Leggi l'array in input
        string input = Console.ReadLine();
        
        // Rimuovi le parentesi quadre, se presenti
        if (input.StartsWith("[") && input.EndsWith("]"))
        {
            input = input.Substring(1, input.Length - 2);
        }
        
        string[] parts = input.Split(',');
        
        int[] array = new int[parts.Length];
        for (int i = 0; i < parts.Length; i++)
        {
            array[i] = int.Parse(parts[i].Trim());
        }
        
        // Leggi l'indice in input
        int index = int.Parse(Console.ReadLine());
        
        int result = ProcessArray(array, index);
        Console.WriteLine(result);
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C# online