Exception Types
Часть раздела Логика и управление потоком путешествия по C# на Coddy — урок 24 из 66.
В C# исключения классифицируются по разным типам в зависимости от ошибки, которую они представляют. Понимание этих типов помогает обрабатывать ошибки более эффективно.
Давайте посмотрим на распространенные типы исключений:
Базовым классом для всех исключений является System.Exception.
try
{
// Код, который может выбросить исключение
}
catch (Exception ex)
{
// Обработка любого исключения
Console.WriteLine(ex.Message);
}Некоторые распространённые типы исключений:
ArgumentException: Выбрасывается при вызове метода с недопустимым аргументом.
string name = null;
if (name == null)
{
throw new ArgumentException("Name cannot be null");
}NullReferenceException: Выбрасывается при попытке доступа к члену null-ссылки.
string text = null;
// This will throw NullReferenceException
int length = text.Length;IndexOutOfRangeException: Выбрасывается, когда индекс массива выходит за пределы массива.
int[] numbers = { 1, 2, 3 };
// This will throw IndexOutOfRangeException
int value = numbers[5];DivideByZeroException: Выбрасывается при делении целого числа на ноль.
int result = 10 / 0; // This will throw DivideByZeroExceptionВы можете перехватывать конкретные исключения:
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);
}Задание
ЛегкоСоздайте метод с именем ProcessArray, который:
- Принимает массив целых чисел и индекс в качестве параметров
- Пытается получить доступ к элементу по указанному индексу
- Возвращает значение элемента в случае успеха
- Если возникает
IndexOutOfRangeException, перехватите его и верните -1
Ваш метод должен иметь следующую сигнатуру:
public static int ProcessArray(int[] array, int index)Шпаргалка
Базовый класс для всех исключений — System.Exception:
try
{
// Code that might throw an exception
}
catch (Exception ex)
{
// Handle any exception
Console.WriteLine(ex.Message);
}Общие типы исключений:
ArgumentException: Выбрасывается, когда метод вызывается с недопустимым аргументом:
string name = null;
if (name == null)
{
throw new ArgumentException("Name cannot be null");
}NullReferenceException: Выбрасывается при обращении к члену на нулевой ссылке:
string text = null;
int length = text.Length; // Throws NullReferenceExceptionIndexOutOfRangeException: Выбрасывается, когда индекс массива выходит за пределы:
int[] numbers = { 1, 2, 3 };
int value = numbers[5]; // Throws IndexOutOfRangeExceptionDivideByZeroException: Выбрасывается при делении целого числа на ноль:
int result = 10 / 0; // Throws DivideByZeroExceptionПерехват специфических исключений:
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);
}Попробуйте сами
using System;
class Program
{
public static int ProcessArray(int[] array, int index)
{
// Напишите свой код здесь
return 0;
}
static void Main(string[] args)
{
// Чтение входного массива
string input = Console.ReadLine();
// Удаление скобок, если они присутствуют
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());
}
// Чтение входного индекса
int index = int.Parse(Console.ReadLine());
int result = ProcessArray(array, index);
Console.WriteLine(result);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety