Multiple Catch Blocks
Часть раздела Логика и управление потоком путешествия по C# на Coddy — урок 25 из 66.
Множественные блоки catch позволяют обрабатывать различные типы исключений с помощью специального кода для каждого типа исключения.
Начните с простого блока try:
try
{
int number = int.Parse("abc");
}
Добавьте блок catch для конкретного исключения:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Вы можете добавить несколько блоков catch для обработки различных исключений:
try
{
int number = int.Parse("abc");
int result = a10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
Первый подходящий блок catch будет выполнен. Располагайте свои блоки catch от наиболее специфичных к наиболее общим типам исключений.
Задание
ЛегкоСоздайте метод с именем DivideNumbers, который принимает два параметра типа string:
numeratorStr: строка, представляющая числительdenominatorStr: строка, представляющая знаменатель
Метод должен:
- Попробовать разобрать обе строки в целые числа
- Попробовать разделить числитель на знаменатель
- Вернуть результат как целое число
- Обработать FormatException, выведя "Invalid format" и вернув 0
- Обработать DivideByZeroException, выведя "Cannot divide by zero" и вернув 0
- Обработать любые другие исключения с помощью общего блока catch, который выводит "An error occurred" и возвращает 0
Шпаргалка
Множественные блоки catch позволяют обрабатывать разные типы исключений с помощью специфического кода для каждого типа исключения.
Базовый try-catch с конкретным исключением:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Множественные блоки catch для разных исключений:
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
Первый подходящий блок catch будет выполнен. Располагайте блоки catch от наиболее специфических к наиболее общим типам исключений.
Попробуйте сами
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// Напишите свой код здесь
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + 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