C++ Exceptions
The gets function provides no support to prevent buffer overflow if large input string are provided. Note: gets was deprecated in C11 and removed from C14. It is defined in header file.
When executing C++ code, different errors can occur: coding errors made by the programmer, errors due to wrong input, or other unforeseeable things.
When an error occurs, C++ will normally stop and generate an error message. The technical term for this is: C++ will throw an exception (throw an error).
C++ try and catch
Exception handling in C++ consist of three keywords: try
, throw
and catch
:
The try
statement allows you to define a block of code to be tested for errors while it is being executed.
The throw
keyword throws an exception when a problem is detected, which lets us create a custom error.
The catch
statement allows you to define a block of code to be executed, if an error occurs in the try block.
The try
and catch
keywords come in pairs:
Example
// Block of code to try
throw exception; // Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
Consider the following example:
Example
int age = 15;
if (age > 18) {
cout << 'Access granted - you are old enough.';
} else {
throw (age);
}
}
catch (int myNum) {
cout << 'Access denied - You must be at least 18 years old.n';
cout << 'Age is: ' << myNum;
}
Example explained
We use the try
block to test some code: If the age
variable is less than 18
, we will throw
an exception, and handle it in our catch
block.
String Handling In Dev C Download
In the catch
block, we catch the error and do something about it. The catch
statement takes a parameter: in our example we use an int
variable (myNum
) (because we are throwing an exception of int
type in the try
block (age
)), to output the value of age
.
If no error occurs (e.g. if age
is 20
instead of 15
, meaning it will be be greater than 18), the catch
block is skipped:
Example
Run example »String Handling In Dev C 2017
You can also use the throw
keyword to output a reference number, like a custom error number/code for organizing purposes:
Example
Strings In Dev C++
int age = 15;
if (age > 18) {
cout << 'Access granted - you are old enough.';
} else {
throw 505;
}
}
catch (int myNum) {
cout << 'Access denied - You must be at least 18 years old.n';
cout << 'Error number: ' << myNum;
}
Handle Any Type of Exceptions (...)
If you do not know the throw
type used in the try
block, you can use the 'three dots' syntax (...
) inside the catch
block, which will handle any type of exception:
Example
int age = 15;
if (age > 18) {
cout << 'Access granted - you are old enough.';
} else {
throw 505;
}
}
catch (...) {
cout << 'Access denied - You must be at least 18 years old.n';
}