Javascript尝试并抓住

时间:2014-10-31 02:19:10

标签: javascript exception try-catch

无论我做什么,我的代码都没有报告任何错误。这是一个索引数组,当我提示用户输入他们想要删除的列表号时,我得到一个错误。如果它不在索引中或者不是整数,它应该给我一个错误。

function deleteTask(){
    'use strict';
    //Prompt user
    var input = prompt("what task do you want to delete?");

    var delMessage = ' ';

    try {
        //Convert to integer
        var delTask = parseInt(input);
        //Validates that user input was number and is range of to do list
        if ((typeof delTask == 'number') && (delTask <= tasks.length)){
            if (delTask > 1){
                //removes element from array
                var oneDown = parseInt(delTask - 1);
                tasks.splice(oneDown, 1);
            }else{
                tasks.splice(0,1);
            } 

            delMessage = '<h2>To-Do</h2><ol>';
            for (var i = 0, count = tasks.length; i < count; i++) {
                delMessage += '<li>' + tasks[i] + '</li>';
            }
            delMessage += '</ol>';
            output.innerHTML = delMessage; 
        }
        //Return false to prevent submission:
        return false;

    }catch(ex){
        console.log(ex.message);
    }



}

2 个答案:

答案 0 :(得分:1)

简单,将以下代码添加到try块的开头 if((input -parseInt(input ))!=0) throw new Error('not integer');

它应该可以解决问题。

答案 1 :(得分:0)

我改变了你的功能,请看看它是不是你想要的:

var tasks = [1,2,3,4,5,6,7,8,9,10];

function deleteTask(){
    'use strict';
    //Prompt user
    var input = prompt("what task do you want to delete?");
    var delMessage = ' ';

    //Convert to integer
    var delTask = parseInt(input);

    //Validates that user input was number and is range of to do list
    if ((typeof delTask == 'number') && (delTask <= tasks.length)){
        if (delTask > 1){
            //removes element from array
            var oneDown = parseInt(delTask - 1);
            tasks.splice(oneDown, 1);
        }else if (delTask == 0){
            tasks.splice(0,1);
        }

        delMessage = '<h2>To-Do</h2><ol>';
        for (var i = 0, count = tasks.length; i < count; i++) {
            delMessage += '<li>' + tasks[i] + '</li>';
        }
        delMessage += '</ol>';
        document.getElementById('output').innerHTML = delMessage; 
    } else {
        throw "The value is not number or not index of array! Try again!";
    }
    //Return false to prevent submission:
    return false;
}

try {
    deleteTask();
} catch (e) {
    console.log(e);
}