Panic in AngelScript
Our first example demonstrates how to handle unexpected errors or situations in AngelScript. While AngelScript doesn’t have a built-in panic
function like some languages, we can create a similar mechanism using exceptions.
void main()
{
// We'll use exceptions throughout this site to check for
// unexpected errors. This is the only program on the
// site designed to throw an exception.
throw("a problem");
// A common use of exceptions is to abort if a function
// returns an error value that we don't know how to
// (or want to) handle. Here's an example of
// throwing an exception if we get an unexpected error when creating a new file.
File @file = File();
if (!file.open("/tmp/file", "w"))
{
throw("Failed to create file: " + file.getErrorString());
}
}
Running this program will cause it to throw an exception, print an error message, and exit with a non-zero status.
When the first throw
in main
is executed, the program exits without reaching the rest of the code. If you’d like to see the program try to create a temp file, comment out the first throw
.
$ angelscript panic.as
Exception: a problem
Note that unlike some languages which use exceptions for handling of many errors, in AngelScript it’s often preferable to use error-indicating return values where possible, and reserve exceptions for truly exceptional circumstances.
To catch exceptions and handle them gracefully, you can use a try-catch block:
void main()
{
try
{
throw("a problem");
}
catch
{
print("Caught exception: " + getExceptionInfo().message + "\n");
}
}
This will output:
Caught exception: a problem
Remember that while exceptions can be useful for handling unexpected errors, they should be used judiciously. Overuse of exceptions can make code harder to understand and maintain.