Difference between revisions of "Exception Handling"
(Created page with "=Exception Handling (Error Runtime Handling)= category:CGScript __NOTOC__") |
(→Exception Handling (Error Runtime Handling)) |
||
(31 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
=Exception Handling (Error Runtime Handling)= | =Exception Handling (Error Runtime Handling)= | ||
− | [[category: | + | [[category:Program Control Statements]] |
__NOTOC__ | __NOTOC__ | ||
+ | In programming, the exceptions are: | ||
+ | * Errors: Errors that occur in the runtime (excution) of program and make your program failed.(E.g: Using a variable wihout declare it, Assigning wrong data type to a variable...) | ||
+ | * Non-expected things: Things that the coder of program dont expect to happen in the runtime (excution) of program. (E.g: Passing wrong number of input parameters, passing wrong type of input parameters...) In this situtation, the coder will try to catch them and then process them | ||
+ | |||
+ | The exceptions that thrown by system are called system-thrown exceptions. | ||
+ | The exceptions that thrown by users are called user-thrown exceptions | ||
+ | |||
+ | 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 exception handling. | ||
+ | |||
+ | === <span style="color:#DF8621;">'''Syntax'''</span> === | ||
+ | === try-catch statement === | ||
+ | <pre> | ||
+ | object exception; // declare the variable "exeption" | ||
+ | // you must declare your exception variable before using it the try catch statement | ||
+ | // And the data type of this exception variable should be an object type (E.g. object e;) so that it can catch any kind of objects thrown by system or users | ||
+ | try { | ||
+ | // codes that could throw an exception | ||
+ | } | ||
+ | catch (exception) { | ||
+ | // codes that execute when exception is thrown in the try block | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | * In the try clause, when a line of code causes 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. | ||
+ | |||
+ | === <span style="color:#DF8621;">'''See also'''</span> === | ||
+ | |||
+ | * [[Exception class]] for more information about the error object of non-users (system) thrown errors. | ||
+ | |||
+ | === <span style="color:#DF8621;">'''Examples'''</span> === | ||
+ | |||
+ | <source lang="javascript"> | ||
+ | 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."); | ||
+ | } | ||
+ | </source> |
Latest revision as of 11:25, 22 February 2012
Exception Handling (Error Runtime Handling)
In programming, the exceptions are:
- Errors: Errors that occur in the runtime (excution) of program and make your program failed.(E.g: Using a variable wihout declare it, Assigning wrong data type to a variable...)
- Non-expected things: Things that the coder of program dont expect to happen in the runtime (excution) of program. (E.g: Passing wrong number of input parameters, passing wrong type of input parameters...) In this situtation, the coder will try to catch them and then process them
The exceptions that thrown by system are called system-thrown exceptions. The exceptions that thrown by users are called user-thrown exceptions
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 exception handling.
Syntax
try-catch statement
object exception; // declare the variable "exeption" // you must declare your exception variable before using it the try catch statement // And the data type of this exception variable should be an object type (E.g. object e;) so that it can catch any kind of objects thrown by system or users 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 causes 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
- Exception class for more information about the error object of non-users (system) thrown errors.
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.");
}