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

bookОбробка Помилок

Ви могли зустрічати термін помилка виконання у попередніх розділах. Помилка виконання — це помилка, яка виникає під час виконання програми, звідси й назва "помилка виконання".

Зазвичай, коли виникає помилка виконання, програма аварійно завершує роботу або перестає відповідати.

Компілятор може допомогти виявити більшість помилок у коді, але помилки виконання здебільшого непередбачувані й часто залежать від невизначених параметрів.

Наприклад, якщо шлях до файлу, переданий у StreamReader, є недійсним або не існує, виникне помилка виконання, і програма аварійно завершить роботу. Тому подібний небезпечний код часто розміщують у блоках try-catch, щоб спробувати виконати код, а у разі невдачі — перехопити та обробити помилку замість аварійного завершення програми.

Нижче наведено синтаксис блоку try-catch:

index.cs

index.cs

copy
1234567
try { // code to try } catch (Exception errorVar) { // code to handle error }

Тут Exception — це ключове слово, яке представляє тип даних Exception.

Приклад

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.IO; class Program { static void Main(string[] args) { try { new StreamWriter("C:/a/random/path/that/does/not/exist.txt"); } catch(Exception error) { Console.WriteLine(error.Message); } } }
Note
Примітка

Можна опустити частину (Exception error) у виразі catch, якщо змінна error не використовується.

Наведено деякі поширені випадки виникнення помилок під час виконання:

Ділення на нуль

index.cs

index.cs

copy
123456789101112131415161718
using System; class Program { static void Main(string[] args) { try { int a = 100; int b = 0; int result = a / b; } catch { Console.WriteLine("ERROR: Division by Zero."); } } }

Недійсний індекс масиву або списку

index.cs

index.cs

copy
1234567891011121314151617
using System; class Program { static void Main(string[] args) { try { var exampleArray = new int[10]; Console.WriteLine(exampleArray[20]); } catch { Console.WriteLine("ERROR: The array index is out of bounds."); } } }

Ключ не знайдено (для словників):

index.cs

index.cs

copy
123456789101112131415161718192021
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } } }

Блок finally

Існує також додатковий блок коду finally, який виконується після виконання блоку catch:

index.cs

index.cs

copy
12345678910111213141516171819202122232425
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } finally { Console.WriteLine("This line will show after the error"); } } }

1. Яким буде вивід наступної програми?

2. Яке призначення блоку finally у C#?

3. Яке з наступних тверджень є правильним щодо блоку try-catch у C#?

question mark

Яким буде вивід наступної програми?

Select the correct answer

question mark

Яке призначення блоку finally у C#?

Select the correct answer

question mark

Яке з наступних тверджень є правильним щодо блоку try-catch у C#?

Select the correct answer

Все було зрозуміло?

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain how the try-catch block works with an example?

What are some best practices for handling runtime errors?

Can you list other common runtime errors besides the ones mentioned?

Awesome!

Completion rate improved to 2.04

bookОбробка Помилок

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

Ви могли зустрічати термін помилка виконання у попередніх розділах. Помилка виконання — це помилка, яка виникає під час виконання програми, звідси й назва "помилка виконання".

Зазвичай, коли виникає помилка виконання, програма аварійно завершує роботу або перестає відповідати.

Компілятор може допомогти виявити більшість помилок у коді, але помилки виконання здебільшого непередбачувані й часто залежать від невизначених параметрів.

Наприклад, якщо шлях до файлу, переданий у StreamReader, є недійсним або не існує, виникне помилка виконання, і програма аварійно завершить роботу. Тому подібний небезпечний код часто розміщують у блоках try-catch, щоб спробувати виконати код, а у разі невдачі — перехопити та обробити помилку замість аварійного завершення програми.

Нижче наведено синтаксис блоку try-catch:

index.cs

index.cs

copy
1234567
try { // code to try } catch (Exception errorVar) { // code to handle error }

Тут Exception — це ключове слово, яке представляє тип даних Exception.

Приклад

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.IO; class Program { static void Main(string[] args) { try { new StreamWriter("C:/a/random/path/that/does/not/exist.txt"); } catch(Exception error) { Console.WriteLine(error.Message); } } }
Note
Примітка

Можна опустити частину (Exception error) у виразі catch, якщо змінна error не використовується.

Наведено деякі поширені випадки виникнення помилок під час виконання:

Ділення на нуль

index.cs

index.cs

copy
123456789101112131415161718
using System; class Program { static void Main(string[] args) { try { int a = 100; int b = 0; int result = a / b; } catch { Console.WriteLine("ERROR: Division by Zero."); } } }

Недійсний індекс масиву або списку

index.cs

index.cs

copy
1234567891011121314151617
using System; class Program { static void Main(string[] args) { try { var exampleArray = new int[10]; Console.WriteLine(exampleArray[20]); } catch { Console.WriteLine("ERROR: The array index is out of bounds."); } } }

Ключ не знайдено (для словників):

index.cs

index.cs

copy
123456789101112131415161718192021
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } } }

Блок finally

Існує також додатковий блок коду finally, який виконується після виконання блоку catch:

index.cs

index.cs

copy
12345678910111213141516171819202122232425
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } finally { Console.WriteLine("This line will show after the error"); } } }

1. Яким буде вивід наступної програми?

2. Яке призначення блоку finally у C#?

3. Яке з наступних тверджень є правильним щодо блоку try-catch у C#?

question mark

Яким буде вивід наступної програми?

Select the correct answer

question mark

Яке призначення блоку finally у C#?

Select the correct answer

question mark

Яке з наступних тверджень є правильним щодо блоку try-catch у C#?

Select the correct answer

Все було зрозуміло?

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

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

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