Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Practicing Error Handling | Additional Structures & File Handling
C# Beyond Basics
course content

Conteúdo do Curso

C# Beyond Basics

C# Beyond Basics

1. Additional Structures & File Handling
2. Structs & Enumerators
3. Introduction to Object-Oriented Programming (OOP)
4. OOP Essentials
5. OOP Principles

bookPracticing Error Handling

The try-catch syntax has an additional syntax which allows us to catch specific types of errors and deal with them separately:

cs

index

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

The type Exception we used in the previous chapter simply catches all kinds of errors however there are some subtypes of Exception which catch more specific kinds of errors. Following are some common exception types:

  1. DivideByZeroException: There's a division by zero;
  2. FileNotFoundException: The file we're accessing doesn't exist;
  3. KeyNotFoundException: The dictionary key doesn't exist;
  4. IndexOutOfRangeException: The specified index of an array or list is invalid.

The term errorVarName is a variable which stores the Exception object, and has information like the error message which can be accessed through errorVarName.Message. We can omit that in case we're not using it:

cs

index

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

Here's an example of using this kind of try-catch block:

cs

index

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; } } } }

Now using these concepts. Fill in the blanks with relevant exception types in the following code to complete the challenge.

cs

index

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"); } } } }

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 10
some-alt