首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

javascript 中TRY .CATCH 处理异常的用法

2012-11-25 
javascript 中TRY ..CATCH 处理错误的用法.try {  // 此处是可能产生例外的语句  } catch(error) {  // 此

javascript 中TRY ..CATCH 处理错误的用法.
try {  // 此处是可能产生例外的语句  } catch(error) {  // 此处是负责例外处理的语句  } finally {  // 此处是出口语句  }?  try {    document.writeln("开始执行try块语句 ---> ")    document.writeln("还没有发生例外 ---> ")     alert(eval(prompt("输入一个值:","")))   } catch(err) {     document.writeln("捕捉到例外,开始执行catch块语句 --->");     document.writeln("错误名称: " + err.name+" ---> ");     document.writeln("错误信息: " + err.message+" ---> ");  } finally {     document.writeln("开始执行finally块语句")  }?try {    document.writeln("Beginnng the try block")    document.writeln("No exceptions yet")  // Create a syntax error  eval("6 + * 3")  document.writeln("Finished the try block with no exceptions")  } catch(err) {    document.writeln("Exception caught, executing the catch block")    document.writeln("Error name: " + err.name)    document.writeln("Error message: " + err.message)  }  document.writeln("Executing after the try-catch statement") ?function evalText() {  try {    alert(eval(prompt("Enter JavaScript to evaluate:","")))  } catch(err) {    if(err.name == "SyntaxError") alert("Invalid expression")    else alert("Cannot evaluate")  }}? function MyError(msg) {  this.name = "MyError"  this.message = msg  }  MyError.prototype = new Error;  然后,我们就可以创建自定义错误子类的实例:  myError = new MyError("My error message") ?

  七、触发例外

  创建一个Error对象后,就可以使用throw语句来触发相应的例外。Throw的语法如下:

  throw errObj

  errObj必须是一个Error对象或者Error的子类型。在try块代码中触发一个例外后,控制将直接转入catch块。

  下面的代码中,在try块中触发了一个例外,设置例外信息为“oops”,然后控制转移到catch块:

  var s  try {    s = "one "    throw new Error("oops")    s += "two"  } catch(err) {    s += err.message  }  s += " three"  alert(s)? var inner;  var outer;  try {    document.writeln("Beginning outer try block, no exceptions yet");  try{    document.writeln("Beginning inner try block, no exceptions yet");    // 生成一个引用错误    document.writeln(undefinedVariable)    document.writeln("Finished inner try block with no exceptions");  } catch(inner) {  // 内部例外处理    document.writeln("Exception caught, beginning inner catch block");    document.writeln("Error type: " + inner.name);    document.writeln("Error message: " + inner.message);    throw inner;    document.writeln("No exceptions thrown in inner catch block");  } finally {    document.writeln("Executing inner finally block");  }    document.writeln("Finished outer try block with no exceptions");  } catch(outer) {    // 外部例外处理    document.writeln("Exception caught, beginning outer catch block");    document.writeln("Error type: " + outer.name);    document.writeln("Error message: " + outer.message);  } finally {    document.writeln("Executing outer finally block");  }?</body>
</html>

[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
我们可以添加try...catch声明,这样当错误发生时可以采取更适当的措施。
下面的例子用try...catch声明重新修改了脚本。由于误写了alert(),所以错误发生了。不过这一次,catch部分捕获到了错误,并用一段准备好的代码来处理这个错误。这段代码会显示一个自定义的出错信息来告知用户所发生的事情。
点击运行可以看到效果:<html>
<head>
<script type="text/javascript">
var txt=""
function message()
{
try
{
adddlert("Welcome guest!")
}
catch(err)
{
txt="There was an error on this page.\n\n"
txt+="Error description: " + err.description + "\n\n"
txt+="Click OK to continue.\n\n"
alert(txt)
}
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()" />
</body>
</html>

[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]实例 2
下一个例子会显示一个确认框,让用户来选择在发生错误时点击确定按钮来继续浏览网页,还是点击取消按钮来回到首页。如果confirm方法的返回值为false,代码会把用户重定向到其他的页面。如果confirm方法的返回值为true,那么代码什么也不会做。
点击运行可以看到效果:<html>
<head>
<script type="text/javascript">
var txt=""
function message()
{
try
{
adddlert("Welcome guest!")
}
catch(err)
{
txt="There was an error on this page.\n\n"
txt+="Click OK to continue viewing this page,\n"
txt+="or Cancel to return to the home page.\n\n"
if(!confirm(txt))
??? {
??? document.location.href="http://www.w3school.com.cn/"
??? }
}
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()" />
</body>
</html>

热点排行
Bad Request.