1.Error () constructor
When JavaScript parses or executes a statement, the JS engine throws it whenever an error occurs!
JavaScript primitives provide the error () constructor , and all thrown errors are instances of this constructor (that is, objects ).
1 var err1=New error (' shows error '); 2 Console.log (ERR1); 3 Console.log (err1.message);
Operation Result:
ERR1 is an instance object produced by the error () constructor, and the object has the message property provided by all JavaScript engines!
When the code runs or resolves an error, the JS engine throws an error, and the program breaks where the error occurs and no longer executes!
Some JS engines also provide the name and stack properties of the wrong object. But remember that they are not standard, not necessarily every JS engine is provided!
- Message: Error message
- Name: Error name (non-standard attribute)
- Stack: Bad stacks (non-standard properties)
1 var err2=New error (' This is Error 2 '); 2 Console.log (err2.message); // This is error 2 3 Console.log (err2.name); // Error 4 Console.log (err2.stack); // Error:this is the Error 2 at 7.js:5
Operation Result:
2.javascript native Error constructor
In addition to error (), JS also defines 6 more detailed constructors :
- SyntaxError (): Syntax error
- Referenceerror (): Reference error
- Rangeerror (): Error exceeding valid range
- TypeError (): Type error
- Urierror (): URI error
- Evalerror (): The eval function was not executed correctly. Note: This constructor no longer appears in ES5 , and now some places remain, just for compatibility!
1 varerr3=NewError (' ERROR ');2 varerr4=NewSyntaxError (' syntax error '));3 varerr5=NewReferenceerror (' reference error '));4 varerr6=NewRangeerror (' range exceeded error '));5 varerr7=NewTypeError (' type error '));6 varerr8=NewUrierror (' URI error '));7 varerr9=NewEvalerror (' eval function use error ');8 Console.log (ERR3,ERR4,ERR5,ERR6,ERR7,ERR8,ERR9);9Console.log (typeofError,typeofSyntaxError);//function Function
Operation Result:
3. Custom Error objects (except 7 constructors built in JavaScript create Error objects)
1 functionErrora (message) {2 This. message= message | | Error;3 This. Name= ' Errora ';4 }5 //make Errora inherit error6Errora.prototype=NewError ();7Errora.prototype.constructor=Errora;8 9 varerr10=NewErrora (' Generated Errora Error object ');TenConsole.log (ERR10);
Operation Result:
4.throw Statement : Receives an expression as a parameter, throws an error or unexpected, interrupts the execution of the program!
Common uses such as: throw new error (' Error here ');
1 var a=100; 2 Console.log (a); 3 Throw New Error (' error shows '); // The program is interrupted here and will not be executed down 4 console.log (1000); // The program does not execute here
Operation Result:
Simulate the Assert method of the console object: If the passed-in parameter is not the correct expression, an error is thrown .
1 console.log ('---' 2 function ASSERT (Expression,message) { 3 if ( ! expression) { 4 throw {name: ' Assert function ' ,meaage:message}; 5 } 6 } 7 assert (' Error shows 1 '); Span style= "COLOR: #008000" >// No error at this time 8 assert (Undefined, ' Error shows 2 '); //
Operation Result:
Using Console.assert ():
5.try...catch statement: Handle the error, the structure has a try, the general will have catch. Finnally don't have to!
When an error is thrown in a try, the program immediately jumps to the catch to execute.
Here's an example: try throws multiple errors, but only the first error is captured!
1Console.log ('---');2 Try{3 Throw NewTypeError (' type error ');//jump to catch for capture4 Throw NewRangeerror (' range exceeded error ');//does not execute5}Catch(e) {6 Console.log (e); 7}finally{8Console.log (' finnally ');9}
Operation Result:
Optionally, you can nest statements in catch (for example: Try...catch)
1Console.log ('---');2 Try{3 Throw NewTypeError (' type error ');//jump to catch for capture4 Throw NewRangeerror (' range exceeded error ');//does not execute5}Catch(e) {6 if(Einstanceofrangeerror) {7 Console.log (e);8}Else{9 //nested the Try...catch statementTen Try{ One Throwe; A}Catch(e) { - if(EinstanceofTypeError) { -Console.log (' nesting '); the Console.log (e.message); -}Else{ - ThrowE//If you do not meet the criteria, continue to throw, you can continue to nest - } + } - } + A}finally{ atConsole.log (' finnally '); -}
Operation Result:
Note: The Try...catch statement is poorly handled and prone to the destruction of structured programming principles . Use caution !!!
If there is a return in the catch, pay attention to the execution result:
1Console.log ('---');2 vara=10;3 functionTest () {4 Try{5 ThrowA;6 returnA + ' 1 ';//+ ' 1 ' to identify where the value returned from7}Catch(e) {8 returnA//The return value has been saved before finally execution, and the saved value is returned immediately after execution of Finnally9}finally{Tena+=10; One } A } -Console.log (Test ());//Ten -Console.log (a);// -
Operation Result:
Reference: Nanyi JavaScript standard reference Tutorial
JavaScript (vi): error handling mechanism