JavaScript DHTML/Development/Error Exceptions

Материал из Web эксперт
Перейти к: навигация, поиск

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>

Nested Exception Handling (This script only works with Internet Explorer 5, Navigator 6, or later browsers)

   <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>