Завдання: Обробка Помилок
Синтаксис try-catch
має додаткову можливість, яка дозволяє обробляти конкретні типи помилок окремо:
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Тип Exception
, який використовувався у попередньому розділі, перехоплює всі види помилок, проте існують підтипи Exception
, які обробляють більш специфічні помилки. Ось деякі поширені типи виключень:
DivideByZeroException
: ділення на нуль;FileNotFoundException
: файл, до якого здійснюється доступ, не існує;KeyNotFoundException
: ключ у словнику відсутній;IndexOutOfRangeException
: вказаний індекс масиву або списку є недійсним.
Термін errorVarName
— це змінна, яка зберігає об'єкт Exception і містить інформацію, таку як повідомлення про помилку, яке можна отримати через errorVarName.Message
. Це можна опустити, якщо ця інформація не використовується:
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Ось приклад використання такого блоку try-catch
:
index.cs
123456789101112131415161718192021222324252627using System; class Program { static void Main(string[] args) { int[] myArray = { 0, 2, 4, 6, 8, 10 }; int i = 0; while (true) { try { Console.Write(myArray[i] / i + " "); i++; } catch(DivideByZeroException) { i++; } catch(IndexOutOfRangeException) { break; } } } }
Тепер, використовуючи ці концепції, заповніть пропуски відповідними типами винятків у наведеному коді, щоб виконати завдання.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (___) { break; } catch (___) { numberNames.Add(7, "Seven"); } } } }
Використовуйте відповідний тип винятку для кожного блоку catch
. Прочитайте код і визначте, який блок catch
найкраще підходить для обробки певного типу винятку.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; public class HelloWorld { public static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (IndexOutOfRangeException) { break; } catch (KeyNotFoundException) { numberNames.Add(7, "Seven"); } } } }
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
What are the correct exception types to fill in the blanks?
Can you explain why each exception type is used in this context?
Can you give more examples of specific exception types?
Awesome!
Completion rate improved to 2.04
Завдання: Обробка Помилок
Свайпніть щоб показати меню
Синтаксис try-catch
має додаткову можливість, яка дозволяє обробляти конкретні типи помилок окремо:
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Тип Exception
, який використовувався у попередньому розділі, перехоплює всі види помилок, проте існують підтипи Exception
, які обробляють більш специфічні помилки. Ось деякі поширені типи виключень:
DivideByZeroException
: ділення на нуль;FileNotFoundException
: файл, до якого здійснюється доступ, не існує;KeyNotFoundException
: ключ у словнику відсутній;IndexOutOfRangeException
: вказаний індекс масиву або списку є недійсним.
Термін errorVarName
— це змінна, яка зберігає об'єкт Exception і містить інформацію, таку як повідомлення про помилку, яке можна отримати через errorVarName.Message
. Це можна опустити, якщо ця інформація не використовується:
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Ось приклад використання такого блоку try-catch
:
index.cs
123456789101112131415161718192021222324252627using System; class Program { static void Main(string[] args) { int[] myArray = { 0, 2, 4, 6, 8, 10 }; int i = 0; while (true) { try { Console.Write(myArray[i] / i + " "); i++; } catch(DivideByZeroException) { i++; } catch(IndexOutOfRangeException) { break; } } } }
Тепер, використовуючи ці концепції, заповніть пропуски відповідними типами винятків у наведеному коді, щоб виконати завдання.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (___) { break; } catch (___) { numberNames.Add(7, "Seven"); } } } }
Використовуйте відповідний тип винятку для кожного блоку catch
. Прочитайте код і визначте, який блок catch
найкраще підходить для обробки певного типу винятку.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; public class HelloWorld { public static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (IndexOutOfRangeException) { break; } catch (KeyNotFoundException) { numberNames.Add(7, "Seven"); } } } }
Дякуємо за ваш відгук!