...
Exceptions are convenient in many ways for handling errors and special conditions in a program. When we think that a code segment exists which can produce an error then we can use exception handling.
Example
The following example asks the user for input until a valid integer has been entered.
Code Block |
---|
language | java |
---|
title | Exception handling in Java |
---|
| Scanner in = new Scanner(System.in);
boolean error = true;
while (error) {
try {
System.out.println("Please enter a number: ");
int x = in.nextInt();
error = false;
} catch (InputMismatchException exception) {
System.out.println("Oops! That was no valid number. Try again...");
in.nextLine();
}
} |
| If the user enters a value that isn’t a valid integer, the catch block catches the error and forces the loop to repeat. |
Code Block |
---|
language | py |
---|
title | Exception handling in Python |
---|
| while True:
try:
x = int(input("Please enter a number: "))
break
except ValueError:
print("Oops! That was no valid number. Try again...") |
| The try statement in Python works as follows. - First, the try clause (the statement(s) between the
try and except keywords) is executed. - If no exception occurs, the except clause is skipped and execution of the
try statement is finished. - If an exception occurs during execution of the try clause, the rest of the clause is skipped. Then if its type matches the exception named after the
except keyword, the except clause is executed, and then execution continues after the try statement. - If an exception occurs which does not match the exception named in the except clause, it is passed on to outer
try statements; if no handler is found, it is an unhandled exception and execution stops with a message as shown above.
|
...
Code Block |
---|
language | java |
---|
title | Exception handling in Java |
---|
| if(scanner.hasNextInt()){
option = scanner.nextInt();
}else{
System.out.printLn("your message");
} |
| This way you can check whether or not the input can be interpreted as an int and if so assign the value and if not display a message. Calling that method does not advance the scanner. |
...