Javascript Try/Catch

Tei*_*ion 5 javascript regex try-catch

我有一个运行用户生成的正则表达式的函数.但是,如果用户输入了不会运行的正则表达式,则它会停止并翻倒.我已经尝试在Try/Catch块中包装该行但是没有任何反应.

如果它有帮助,我正在运行jQuery但是下面的代码没有它,因为我猜它比那更基础.

编辑:是的,我知道我没有逃避"[",这是故意和问题的重点.我正在接受用户输入,我想找到一种方法来捕捉这种问题,而不会让应用程序掉到脸上.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <title>Regex</title>

    <script type="text/javascript" charset="utf-8">
        var grep = new RegExp('gr[');

        try
        {
            var results = grep.exec('bob went to town');
        }
        catch (e)
        {
            //Do nothing?
        }

        alert('If you can see this then the script kept going');
    </script>
</head>
<body>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Pau*_*lan 17

试试这个新的RegExp抛出异常

正则表达式

    <script type="text/javascript" charset="utf-8">
            var grep;

            try {
                    grep = new RegExp("gr[");
            }
            catch(e) {
                    alert(e);

            }
            try
            {
                    var results = grep.exec('bob went to town');
            }
            catch (e)
            {
                    //Do nothing?
            }

            alert('If you can see this then the script kept going');
    </script>
Run Code Online (Sandbox Code Playgroud)


rsl*_*ite 8

问题出在这一行:

var grep = new RegExp('gr[');
Run Code Online (Sandbox Code Playgroud)

'['是一个特殊字符,因此需要进行转义.此行也不包含在try ... catch中,因此您仍然会收到错误.

编辑:你也可以添加一个

alert(e.message);
Run Code Online (Sandbox Code Playgroud)

在catch子句中查看错误消息.它对javascript中的所有错误都很有用.

编辑2:好的,我需要仔细阅读这个问题,但答案仍然存在.在示例代码中,违规行未包含在try ... catch块中.我把它放在那里,并没有在Opera 9.5,FF3​​和IE7中出错.