Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завдання: Обробка Помилок | Структури Даних та Робота з Файлами
C# Понад Базовий Рівень

bookЗавдання: Обробка Помилок

Синтаксис try-catch має додаткову можливість, яка дозволяє обробляти конкретні типи помилок окремо:

index.cs

index.cs

copy
1234567891011121314151617
try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }

Тип Exception, який використовувався у попередньому розділі, перехоплює всі види помилок, проте існують підтипи Exception, які обробляють більш специфічні помилки. Ось деякі поширені типи виключень:

  1. DivideByZeroException: ділення на нуль;
  2. FileNotFoundException: файл, до якого здійснюється доступ, не існує;
  3. KeyNotFoundException: ключ у словнику відсутній;
  4. IndexOutOfRangeException: вказаний індекс масиву або списку є недійсним.

Термін errorVarName — це змінна, яка зберігає об'єкт Exception і містить інформацію, таку як повідомлення про помилку, яке можна отримати через errorVarName.Message. Це можна опустити, якщо ця інформація не використовується:

index.cs

index.cs

copy
12345678910111213
try { // code } catch (ExceptionType) { // code } ... finally { // code }

Ось приклад використання такого блоку try-catch:

index.cs

index.cs

copy
123456789101112131415161718192021222324252627
using 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

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using 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

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using 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"); } } } }
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 10

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

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

bookЗавдання: Обробка Помилок

Свайпніть щоб показати меню

Синтаксис try-catch має додаткову можливість, яка дозволяє обробляти конкретні типи помилок окремо:

index.cs

index.cs

copy
1234567891011121314151617
try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }

Тип Exception, який використовувався у попередньому розділі, перехоплює всі види помилок, проте існують підтипи Exception, які обробляють більш специфічні помилки. Ось деякі поширені типи виключень:

  1. DivideByZeroException: ділення на нуль;
  2. FileNotFoundException: файл, до якого здійснюється доступ, не існує;
  3. KeyNotFoundException: ключ у словнику відсутній;
  4. IndexOutOfRangeException: вказаний індекс масиву або списку є недійсним.

Термін errorVarName — це змінна, яка зберігає об'єкт Exception і містить інформацію, таку як повідомлення про помилку, яке можна отримати через errorVarName.Message. Це можна опустити, якщо ця інформація не використовується:

index.cs

index.cs

copy
12345678910111213
try { // code } catch (ExceptionType) { // code } ... finally { // code }

Ось приклад використання такого блоку try-catch:

index.cs

index.cs

copy
123456789101112131415161718192021222324252627
using 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

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using 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

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using 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"); } } } }
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 10
some-alt