首页技术为王JavascriptJS入门到精通 第8章 程序调试与错误处理

JS入门到精通 第8章 程序调试与错误处理

分类Javascript时间2026-06-18 17:55:12发布信义之树浏览90
导读:一、练习 1. 练习1 (1)源代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>onerror事件</title>...

一、练习

1. 练习1

  (1)源代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>onerror事件</title>
    
<script type="text/javascript">    
window.onerror=function(ms,Url,Line){
    alert("为什么多次弹出?\n"+Line+"\n"+ms+"\n"+Url+"\n");
    return true;
}
    


function ImgLoad(){
  document.images[0].onerror=function(){
      alert("您调用的图像并不存在\n");    
  };
  document.images[0].src="test.gif";
}
    
    
    
</script>    
    
    
    
</head>
<body onload="ImgLoad()">

<img />    
    
<script type="text/javascript">
onHave();  //调用不存在的onHave()函数

</script>    
    
    
    

</body>
</html>


 (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_1/

 (3)Tips

   整半天,都啥玩意。


2. 练习2

  (1)源代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>try catch语句</title>
</head>

<body>
<script type="text/javascript">
try{
   document.forms.input.length; 
}catch(exception){
    alert("运行时有异常发生");
}finally{
    alert("结束try...catch...finally语句");
}
    
    
</script>        
</body>
</html>


 (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_2/

 (3)Tips

   比较明确。


3. 练习3

  (1)源代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>cacth里面又有try</title>
</head>

<body>
<script type="text/javascript">
try{
    document.forms.input.length;        //调用页面表单中文本框的长度
}catch(exception){
    alert("try区域运行时有异常发生");            
    try{
        document.forms.input.length
    }catch(exception2){
        alert("catch区域运行时有异常发生");
    }
}finally{
    alert("结束try...catch...finally语句");        //最终程序调用执行的语句
}    
    
    
    
</script>        
</body>
</html>


 (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_3/

 (3)Tips

   这是为嘛。


4. 练习4

  (1)源代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>

<body>
<script type="text/javascript">

try{
   document.forms.input.length; 
}catch(exception){
    alert("错误类型字符串为:"+exception.name+"\n实际的错误消息为:"+exception.message);
}finally{
    alert("结束try...catch...finally语句");
}
       

    
</script>        
</body>
</html>


 (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_4/

 (3)Tips

   显示参数。


5. 练习5

  (1)源代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>

<body>
<script type="text/javascript">


try{
    
    var num=1/0;
       
    if(num=="Infinity"){
        throw new Error("除数不可以为0");
    }
    
}catch(exception){
    alert(exception.message);
}    
    
    
    
</script>        
</body>
</html>


 (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_5/

 (3)Tips

   infinity首字母得大写!


6. 练习6

  (1)源代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>抛出自定义异常</title>
</head>

<body>
<script type="text/javascript">
function test(num1,num2){
    try{ 
        if(arguments.length<2){
            throw new Error("参数个数不够");
        }

        if(num1/num2=="Infinity"){
            throw new Error("除数不可以为0");
        }
        
    }catch(exception){
        alert(exception.message);
    }     
    
}    
    
test(1);                            
test(1,0);    
    
</script>        
</body>
</html>


 (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_6/

 (3)Tips

   跟上一个差不多。


二、编程训练

1. 训练1

 (1)源代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>

<body>
<script type="text/javascript">
    
var str = "我喜欢JavaScript";
    
try{
    //var err=str.substr(3,6);
    
    var err = str.subStr(3,6);
    document.write(err);
}catch(e){
    alert("方法名错误");
    //alert("错误类型字符串为:"+exception.name+"\n实际的错误消息为:"+exception.message);
}    
    
    
    
</script>        
</body>
</html>

  (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_7/

  (3)Tips

   e和exception要搭配使用。


1. 训练1

 (1)源代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>

<body>
<script type="text/javascript">

var str = "我喜欢JavaScript";
    
try{
    var err=str.subStr(3,6);

    document.write(err);
}catch(e){
    //alert("方法名错误");
    alert("错误类型字符串为:"+e.name+"\n实际的错误消息为:"+e.message);
}       
        
    
</script>        
</body>
</html>

  (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_8/

  (3)Tips

   这不就用上了。


三、实践与练习

1. 实践1

 (1)源代码

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
<title></title>
<script type="text/javascript">
var arr=new Array("A","B","C","D","E");
    
function getError(msg){
    var error=new Error(msg);
    return error;
}
 
function getValue(form){
   try{    
        var val=form.number.value;
       
        if(val == "") {
          throw getError("输入不能为空");
        }   
       if(isNaN(val)){
          throw getError("输入的不是一个数字");//抛出异常
        }
        if(val < 1 || val > 5){
          throw getError("输入1~5之间的数字");//抛出异常
        }

        form.output.value = arr[val-1];
    }catch(e){
        alert(e.message);//弹出错误提示
        form.output.value = "";//清空文本框
        form.number.select();//选择输入的值
    }    
}
</script>
</head>
<body>
<form>
  输入1~5之间的数字:
    
  <input type="text" name="number">
  <input type="button" value="查找" onclick="getValue(this.form)">
  <input type="text" name="output">
</form>
</body>
</html>

  (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_9/

  (3)Tips

     所以catch在什么情况下执行。


2. 实践2

 (1)源代码

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
<title></title>
<style type="text/css">

body,td,th {font-size: 12px;}
.red{color: red;}
.green{color: green;}

</style>
<script type="text/javascript">
  function getError(msg){//创建自定义函数
    var error = new Error(msg);//创建Error对象
    return error;//返回创建的对象
  }
  function checkinput(){//创建自定义函数
    var user=form.user.value;//获取用户名文本框的值
    var checkuser=/^[a-zA-Z]\w{4,15}$/;            //定义正则表达式
    try{
      if(user == ""){
        throw getError("用户名不能为空");
      }
      if(!checkuser.test(user)){//用正则表达式进行判断
        throw getError("用户名不符合要求");
      }
    }catch(e){
      alert(e.message);//弹出提示对话框
    }
    var pwd=form.pwd.value;//获取密码文本框的值
    var checkpwd=/^[a-zA-Z0-9]{6,12}$/;            //定义正则表达式
    try{
      if(pwd == ""){
        throw getError("密码不能为空");
      }
      if(!checkuser.test(pwd)){//用正则表达式进行判断
        throw getError("密码不符合要求");
      }
    }catch(e){
      alert(e.message);//弹出提示对话框
    }
  }
</script>
</head>
<body>
<form name="form" method="post" action="#">
用户名:<input type="text" name="user" id="user">
  <span id="userbox">*必须是以字母开头,可包含字母、数字或下划线,长度5-16个字节</span><br>
密&emsp;码:<input type="password" name="pwd" id="pwd">
  <span id="pwdbox">*可包含字母、数字,长度6-12个字节</span><br>
<input type="button" name="but" value="测试" onclick="checkinput()">
</form>
</body>
</html>

  (2)运行页面

    https://www.xinyizhishu.top/jsC/sc/8_10/

  (3)Tips

     没求意思。




JS入门到精通 第7章 正则表达式 JS入门到精通 第9章 事件处理

游客 回复需填写必要信息