Sobes.tech
Junior

оператори throw дар C# чист?

sobes.tech AI

Ҷавоб аз AI

Оператор throw истифода мешавад барои баровардани хатогӣ ба таври равшан. Он имкон медиҳад, ки иҷрои муқаррарии барнома қатъ шавад ва идоракунӣ ба блоки коркарди хатогиҳо гузарад.

// Мисоли истифодаи оператори throw
try
{
    int[] numbers = { 1, 2, 3 };
    int index = 5;

    // Баровардани хатогии IndexOutOfRangeException дастӣ
    if (index >= numbers.Length)
    {
        throw new IndexOutOfRangeException("Индекси дар ҳудуди массив нест.");
    }

    Console.WriteLine(numbers[index]);
}
catch (IndexOutOfRangeException ex)
{
    // Ҳал кардани хатогӣ
    Console.WriteLine($"Хатогӣ: {ex.Message}");
}

Оператор throw метавонад дар ду шакл истифода шавад:

  1. throw expression;: Як хатогии навро бароварда, ки expression намунаи синфест, ки аз System.Exception мерос гирифтааст.

    throw new ArgumentException("Аргументи нодуруст.");
    
  2. throw;: Ҳолати ҳозираи хатогиро дар блоки catch такрор мекунад. Ин тамоми маълумоти дар бораи стеки занҷирро нигоҳ медорад.

    try
    {
        // Коде, ки метавонад хатогӣ барорад
    }
    catch (FileNotFoundException ex)
    {
        // Иловаи коркард ё сабт
        Console.WriteLine($"Файл ёфт нашуд: {ex.FileName}");
    
        // Такрори баровардани хатогӣ барои коркард дар сатҳи боло
        throw;
    }
    

Истифодаи throw муҳим аст барои:

  • нишон додани хатоҳо ё ҳолатҳои номувофиқ дар барнома.
  • Эҷоди хатогиҳои махсус барои хатоҳои мушаххас.
  • Тасдиқи маълумот дар бораи хато ба коди даъваткунанда барои коркарди дуруст.