JavaScript DHTML/Development/Error Exceptions
Содержание
- 1 A Custom Object Exception
- 2 Throwing a Custom Error Object Exception
- 3 Catch that error!
- 4 <SCRIPT> function dosomething() { } function goodFunc(){ try { doSomething(); } catch (e) { if (e.description == "Object expected") { alert("Cannot find a function named doSomething!"); } else { alert ("Other error" + e.description); } } } </SCRIPT>
- 5 Throw that error!
- 6 Throwing an Error Object Exception
- 7 Throwing a String Exception
- 8 Handling Errors with onError
A Custom Object Exception
<source lang="html4strict">
/* JavaScript Bible, Fourth Edition by Danny Goodman John Wiley & Sons CopyRight 2001
- /
<HTML> <HEAD> <TITLE>Throwing a Custom Error Object Exception</TITLE> <SCRIPT LANGUAGE="JavaScript"> var letters = new Array("A","B","C","D","E") function getErrorObj(msg) {
var err = new Error(msg) // take care of IE5/5.5 if (!err.message) { err.message = msg } err.name = "MY_ERROR" return err
} function getLetter(fld) {
try { var inp = parseInt(fld.value, 10) if (isNaN(inp)) { throw getErrorObj("Entry was not a number.") } if (inp < 1 || inp > 5) { throw getErrorObj("Enter only 1 through 5.") } fld.form.output.value = letters[inp] } catch (e) { switch (e.name) { case "MY_ERROR" : alert(e.message) fld.form.output.value = "" fld.focus() fld.select() break default : alert("Reload the page and try again.") } }
} </SCRIPT> </HEAD> <BODY>
Throwing a Custom Error Object Exception
<FORM> Enter a number from 1 to 5: <INPUT TYPE="text" NAME="input" SIZE=5> <INPUT TYPE="button" VALUE="Get Letter" onClick=getLetter(this.form.input)> Matching Letter is:<INPUT TYPE="text" NAME="output" SIZE=5> </FORM> </BODY> </HTML>
</source>
An Exception Handling Example
<source lang="html4strict">
<HTML> <HEAD><TITLE>Exception Test</TITLE></HEAD> <SCRIPT LANGUAGE="JavaScript"></SCRIPT> <BODY>
This script only works with Internet Explorer 5, Navigator 6, or later browsers.
<SCRIPT LANGUAGE="JavaScript"></SCRIPT> </BODY> </HTML>
</source>
Catching an Error
<source lang="html4strict">
<HTML> <TITLE>Catch that error!</TITLE> <SCRIPT> function catchError(errString) {
try { try { if (errString == 42) throw new Error (42, "errString is 42 !"); else throw new Error (0, "errString is NOT 42 !"); } catch(e) { if (e.number == 42) return (e.description + " Got this one!"); else throw e; // re-throw the error } } catch (e){ return(e.description + " This one not handled here!"); }
} </SCRIPT> </HEAD> <BODY>
Catch that error!
<FORM name="theForm">
We can handle 42: | <INPUT type=text name=errText size=40 value="42"> | |
<INPUT type=button name=btnThrow value="Catch it!" onClick="alert(catchError(document.theForm.errText.value));"> |
</FORM> </BODY> </HTML>
</source>
Catching the "Object Expected" Error
<source lang="html4strict">
<HTML> <BODY>
<SCRIPT> function dosomething() { } function goodFunc(){ try { doSomething(); } catch (e) { if (e.description == "Object expected") { alert("Cannot find a function named doSomething!"); } else { alert ("Other error" + e.description); } } } </SCRIPT>
<FORM> <INPUT type=button value="Click" onClick="goodFunc();"> </FORM> </BODY> </HTML>
</source>
Controlling Script Errors
<source lang="html4strict">
/* JavaScript Bible, Fourth Edition by Danny Goodman John Wiley & Sons CopyRight 2001
- /
<HTML> <TITLE>Error Dialog Control</TITLE> <SCRIPT LANGUAGE="JavaScript1.1"> // function with invalid variable value function goWrong() {
var x = fred
} // turn off error dialogs function errOff() {
window.onerror = doNothing
} // turn on error dialogs with hard reload function errOn() {
window.onerror = handleError
} // assign default error handler window.onerror = handleError // error handler when errors are turned off...prevents error dialog function doNothing() {return true} function handleError(msg, URL, lineNum) {
var errWind = window.open("","errors","HEIGHT=270,WIDTH=400") var wintxt = "<HTML><BODY BGCOLOR=RED>" wintxt += "An error has occurred on this page. " wintxt += "Please report it to Tech Support." wintxt += "<FORM METHOD=POST ENCTYPE="text/plain" " wintxt += "ACTION=mailTo:support4@dannyg.ru >" wintxt += "<TEXTAREA NAME="errMsg" COLS=45 ROWS=8 WRAP=VIRTUAL>" wintxt += "Error: " + msg + "\n" wintxt += "URL: " + URL + "\n" wintxt += "Line: " + lineNum + "\n" wintxt += "Client: " + navigator.userAgent + "\n" wintxt += "-----------------------------------------\n" wintxt += "Please describe what you were doing when the error occurred:"wintxt += "</TEXTAREA>
" wintxt += "<INPUT TYPE=SUBMIT VALUE="Send Error Report">" wintxt += "<INPUT TYPE=button VALUE="Close" onClick="self.close()">" wintxt += "</FORM></BODY></HTML>" errWind.document.write(wintxt) errWind.document.close() return true } </SCRIPT> </HEAD> <BODY> <FORM NAME="myform"> <INPUT TYPE="button" VALUE="Cause an Error" onClick="goWrong()"><P> <INPUT TYPE="button" VALUE="Turn Off Error Dialogs" onClick="errOff()"> <INPUT TYPE="button" VALUE="Turn On Error Dialogs" onClick="errOn()"> </FORM> </BODY> </HTML> </source>
<source lang="html4strict">
<HTML> <HEAD><TITLE>Exception Test</TITLE></HEAD> <SCRIPT LANGUAGE="JavaScript"></SCRIPT> <BODY> <SCRIPT LANGUAGE="JavaScript"></SCRIPT> </BODY> </HTML>
</source>
Throwing an Error
<source lang="html4strict">
<HTML> <HEAD> <TITLE>Throw that error!</TITLE> <SCRIPT> function throwError(errString) {
try { throw new Error (42, errString); } catch(e){ alert("Error number: " + e.number + "; Description: " + e.description) }
} </SCRIPT> </HEAD> <BODY>
Throw that error!
<FORM name="theForm">
Enter text for the error: |
<INPUT type=text name=errText size=40> |
|
<INPUT type=button name=btnThrow value="Throw it!" onClick="throwError(document.theForm.errText.value);"> |
</FORM> </BODY> </HTML>
</source>
Throwing an Error Object Exception
<source lang="html4strict">
/* JavaScript Bible, Fourth Edition by Danny Goodman John Wiley & Sons CopyRight 2001
- /
<HTML> <HEAD> <TITLE>Throwing an Error Object Exception</TITLE> <SCRIPT LANGUAGE="JavaScript"> var letters = new Array("A","B","C","D","E") function getErrorObj(msg) {
var err = new Error(msg) // take care of IE5/5.5 if (!err.message) { err.message = msg } return err
} function getLetter(fld) {
try { var inp = parseInt(fld.value, 10) if (isNaN(inp)) { throw getErrorObj("Entry was not a number.") } if (inp < 1 || inp > 5) { throw getErrorObj("Enter only 1 through 5.") } fld.form.output.value = letters[inp] } catch (e) { alert(e.message) fld.form.output.value = "" fld.focus() fld.select() }
} </SCRIPT> </HEAD> <BODY>
Throwing an Error Object Exception
<FORM> Enter a number from 1 to 5: <INPUT TYPE="text" NAME="input" SIZE=5> <INPUT TYPE="button" VALUE="Get Letter" onClick=getLetter(this.form.input)> Matching Letter is:<INPUT TYPE="text" NAME="output" SIZE=5> </FORM> </BODY> </HTML>
</source>
Throwing String Exceptions
<source lang="html4strict">
<HTML> <HEAD> <TITLE>Throwing a String Exception</TITLE> <SCRIPT LANGUAGE="JavaScript"> var letters = new Array("A","B","C","D","E") function getLetter(fld) {
try { var inp = parseInt(fld.value, 10) if (isNaN(inp)) { throw "Entry was not a number." } if (inp < 1 || inp > 5) { throw "Enter only 1 through 5." } fld.form.output.value = letters[inp-1] } catch (e) { alert(e) fld.form.output.value = "" fld.focus() fld.select() }
} </SCRIPT> </HEAD> <BODY>
Throwing a String Exception
<FORM> Enter a number from 1 to 5: <INPUT TYPE="text" NAME="input" SIZE=5> <INPUT TYPE="button" VALUE="Get Letter" onClick=getLetter(this.form.input)> Matching Letter is:<INPUT TYPE="text" NAME="output" SIZE=5> </FORM> </BODY> </HTML>
</source>
Using the onError Event Handler
<source lang="html4strict">
<HTML> <HEAD> <TITLE>Handling Errors with onError</TITLE> <SCRIPT></SCRIPT> </HEAD> <BODY>
Handling Errors with onError
<FORM> <INPUT TYPE="BUTTON" ONCLICK="createAnError()" VALUE="Click here to generate an error."> </FORM> </BODY> </HTML>
</source>