1

我有一个应用程序有一个选项卡面板,我们可以在其中编写 Extjs 代码,并且通过单击按钮,代码的 o/p 应该显示在预览中。为此,我有一个 iFrame,并且正在通过 document.write(content) 方法更新 iframe,其中 content 是一个包含 Extjs 代码的变量。

我的要求是,如果运行 js 代码时出现任何错误,系统将捕获该错误并显示在预览区域(iframe)中。

任何人都可以知道如何在 Button click 上捕获错误吗?

我已经完成了 w3school 的 try/catch/finally 教程,但它没有帮助,因为我还需要捕获控制台错误。

谢谢塔帕斯维尼

4

2 回答 2

0

我得到了解决方案。当然我们不能在 Extjs 中实现这一点。我们可以在简单的 Javascript window.onerror 事件中实现这一点。

示例代码:

window.onerror = function(message, url, linenumber) {
        var errorbox = document.createElement('div'); 
        errorbox.innerHTML = '<font color = red >'+message+'<br> At line number  :  '+linenumber+'</font>'; 
        document.body.appendChild(errorbox); 
        return ;
 } 
于 2013-04-01T07:23:29.123 回答
0
var varMessage = Ext.MessageBox.show({
    msg: 'Initiating, please wait...',
    //title: 'Please wait',
    progressText: 'Saving...',
    animateTarget: 'btn1',
    progress: true,
    closable: false,
    width: 50,
    wait: true,
    waitConfig: {
        interval: 400,
        duration: 2000,
        //increment: 2,
        text: 'Initiating...',
        scope: this,
        fn: function() {
            //Code for ajax request
            Ext.Ajax.request({
                url: 'url',
                async: false,
                //Code for if url successfully done
                success: function(response, opts) {
                    var obj = (response.responseText);
                    Ext.MessageBox.hide();
                    //Code for error handling
                    try {
                        Ext.Msg.alert('Status', 'Request successfully done .');
                    } catch(err) {
                        Ext.Msg.alert('Error', 'Some error occured during execution.<br/></br>' + err);
                    } finally {}
                    //Code for error handling
                    },
                //Code for if any error occured during execution
                failure: function(response, opts) {
                    Ext.MessageBox.hide();
                    Ext.Msg.alert("Error", "Some issue occured during execution on server !");
                }
            });
        }
    }
});
于 2014-06-10T14:05:49.247 回答