javascript - 使用decodeURI时如何捕获错误?

标签 javascript decodeuricomponent

例如,如果使用 decodeURI('%C4%97%') 它会触发并出错(是的,这是一个错误,专门用于测试):

URIError: malformed URI sequence ...('textarea#encode-url-result').val(decodeURI(jQuery('input#encode-url-input').va...

即使我把它放在 try-catch 中,它仍然会致命。有没有办法捕获它并显示警报?

更新:

这是我的代码,但我在控制台中仍然收到错误

try{
    jQuery('a#encode-url-encode, a#encode-url-decode').click(function(){
        if(jQuery('input#encode-url-input').val().length == 0)
            showCustomAlert('<strong>Warning!</strong> Please enter value.');

        var result = null;

        if(jQuery(this).attr('id') == 'encode-url-encode')
            result = encodeURI(jQuery('input#encode-url-input').val());
        else if(jQuery(this).attr('id') == 'encode-url-decode')
            result = decodeURI(jQuery('input#encode-url-input').val());

        jQuery('textarea#encode-url-result').val(result);
    });
}
catch(e){
    alert(e);
}

最佳答案

这工作正常:

try {
    decodeURI('%C4%97%')
} catch (ex) {
    alert("ERROR DECODING URI");
}

演示: http://jsfiddle.net/P6EBN/

编辑:

从错误消息的外观来看,您正在尝试使用 jQuery 设置文本区域的值。

尝试这样的事情:

var newVal = "";
var toDecode = jQuery('input#encode-url-input').val();
try {
    newVal = decodeURI(toDecode);
} catch (ex) {
    // alert("ERROR DECODING URI");
}
jQuery('textarea#encode-url-result').val(newVal);

只是尝试将其拆分,以便您可以专门针对解码。

此外,在 id 选择器前面使用 tagName 是不必要的。只需使用这些选择器:

jQuery("#encode-url-input")
// and
jQuery("#encode-url-result")

关于javascript - 使用decodeURI时如何捕获错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15980396/

相关文章:

javascript - 如何像jquery站点一样设置中间的蓝色边框

javascript - DecodeURIComponent 不支持 %uXXXX 编码组件

javascript - 解码 URL 中的非英文字母 (javascript)

javascript - AS2 到 AS3 转换错误

javascript - 缩短长目录

php - document.writing 用 Ja​​vascript - smarty

javascript - 为什么 decodeURIComponent ('%' ) 会锁定我的浏览器?

javascript - DecodeURIComponent 不适用于总字符串

module - jq中调用自定义模块的格式是什么?

javascript - 如何在异步调用期间填充数组并将其发送到响应对象中