The last thing we will get familiar with in this chapter is how to "capture" wrong data using the
Watch this video lesson to learn how to use the
try-catch statement to enter a valid integer number in certain range: https://youtu.be/0WLRjNcSh3I.
try-catch construction is used to capture and handle exceptions (errors) during program execution.
In programming, exceptions are a notification of an event that violates the normal operation of a program. Such exceptional events interrupt the execution of the program, and it is looking for something to process the situation. If it does not find it, the exception is printed on the console. If found, the exception is processed, and the program continues its normal execution. After a while, we'll see how this happens.
When an exception is found (e.g. when we divide an integer by zero), it is said that the exception was "thrown" (throw exception).
When the exception is handled and a piece of program logic recovers the program execution from the problem, we say the we "catch the exception".
try-catch construction in C# has different forms, but for now we will use the most basic of them:
We have a piece of code (sequence of commands) inside the
try block. If this code runs normally (without errors), all the commands in the
try blocks are executed. If some of the commands in the
try block throw and exception (in case of an error), the code execution is stopped, and the
catch block is executed. In this case we say that we catch and handle the error (exception).
In the next task, we will see how to handle a situation where a user enters a non-numeric input (for example, a
string instead of an
Write a program that checks if an n number is even, and if it is, prints it on the screen. If an invalid number is entered, the program should display a notification that the entered input is not a valid number and the entering of the number has to be done again.
Here's how we can solve the problem:
- We create an infinite
whileloop and as a condition we set
- In the body of the loop:
- We create a
- In the
tryblock we write the programming logic for reading the user input, parsing it to a number, and the check for even number.
- If it is an even number, we print it and go out of the loop (with
break). The program is done and ends.
- If it is an odd number, we print a message saying that an even number is required without leaving the loop (because we want it to be repeated again).
- If we catch an exception when executing the
tryblock, we write a message for invalid input number (and the loop is repeated because we do not explicitly go out of it).
- We create a
Here is a sample implementation of the described idea:
Play with the above code. Try to enter invalid numbers (e.g. text messages), non-integer numbers, odd numbers and even numbers.
The solution should work in all cases: whether we are entering integer numbers, invalid numbers (for example, too many digits), or non-numbered text.
The above program logic will repeat in an infinite loop the process of entering a value until a valid even integer is entered.
int.Parse()method will throw an exception in case of an invalid integer.
- In case of a valid integer, the program will check if it is even. In this case a "success" message is shown, and the loop is stopped using
- In case of an odd integer, an error message is shown, and the loop repeats again.
- In case of an exception (error during the number parsing), an error message is shown, and the loop repeats again.
Test your solution here: https://judge.softuni.org/Contests/Practice/Index/514#12.