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 = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
Выполнится первый подходящий блок catch. Располагайте блоки catch от наиболее специфичных к наиболее общим типам исключений.
Задание
ЛегкоСоздайте метод с именем DivideNumbers, который принимает два строковых параметра:
numeratorStr: строка, представляющая числительdenominatorStr: строка, представляющая знаменатель
Метод должен:
- Попробовать преобразовать обе строки в целые числа
- Попробовать разделить числитель на знаменатель
- Вернуть результат в виде целого числа
- Обработать
FormatException, выводя "Invalid format" и возвращая 0 - Обработать
DivideByZeroException, выводя "Cannot divide by zero" и возвращая 0 - Обработать любые другие исключения с помощью общего блока catch, который выводит "An error occurred" и возвращает 0
Попробуйте сами
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