Exception Handling
Exception Handling (Error Runtime Handling)
An exception is an error occurs in the runtime (the excution) of program. The CGScript language uses the try/catch statement and the throw expression to implement the exception handling.
Syntax
try-catch statement
exeption declaration // you must declare your exception variable before using it the try catch statement try { // codes that could throw an exception } catch (exception) { // codes that execute when exception is thrown in the try block }
- In the try clause, when a line of code cause the exception/error, the exception will be thrown to the catch clause and the codes in catch clause will process that exception. All codes below the code which cause the exception/error will be ignored.
- The exception can be any type (E.g. exception object, number, string...)
- CGScript language does not support multi catch clauses.
- Both try and catch clauses can contain nested try/catch statements.
throw expression
throw [expression]
- The expression can be any type (E.g. exception object, number, string...)
- Used in try-catch statement only.
- If throw is used in catch clause, it will be re-throw. See below examples for information about re-throw.
See also
Examples
Example 1:
object e;
string Name = "ManTu";
try {
Age = 20; // The Age variable is not declared, so this line will cause exception/error. An exception will be thrown to the catch clause
// And all codes below this line (Age = 20;) will not be ignored.
print("Hello " + Name + "! Your Age is: " + Age);
}
catch(e) {
print("====There 's an error with your script :)======");
print(e.ToString());
}
======================================================
Example 2:
string e;
string Name = "ManTu";
number Age = 0;
try {
if(Age == 0)
throw "Age can not be zero!"; // use throw expression in try clause to throw a specific exception to catch clause
else
print("Hello " + Name + "! Your Age is: " + Age);
}
catch(e) {
print(e); // print out: Age can not be zero!
}
======================================================
Example 3: Re-throw
object e;
try
{
try {
s = 10;
}
catch(e) {
throw; // throw in this case will be re-throw. It will re-throw the exception to the try-catch statement which contain it.
}
}
catch(e) // this catch clause will receive the exception that re-thrown by above catch clause
{
print("s is not declared yet.");
}