我想在Javascript/Jquery函数中使用异常处理

I want to Use Exception Handling in Javascript / Jquery function

本文关键字:异常处理 函数 Jquery Javascript      更新时间:2023-09-26

我的函数就像这个

// JavaScript Document

$('#MyFormSubmit').submit(function(){
    try{
    /* Ajax - 1 */
    $.ajax({
           url: 'Any',
           type: 'GET',
           data: 'ID',
           contentType: "application/json;charset=utf-8",
           success: function (data) {
               alert("Success - 1");               
            },
            error: function (x, y, z) {
                alert("Error - 1");
            }
        });
    /* Ajax - 2 */
    $.ajax({
           url: 'Any',
           type: 'GET',
           data: 'ID',
           contentType: "application/json;charset=utf-8",
           success: function (data) {
               alert("Success - 2");               
            },
            error: function (x, y, z) {
                alert("Error - 2");
            }
        });
    /* Ajax - 3 */
    $.ajax({
           url: 'Any',
           type: 'GET',
           data: 'ID',
           contentType: "application/json;charset=utf-8",
           success: function (data) {
               alert("Success - 3");               
            },
            error: function (x, y, z) {
                alert("Error - 3");
            }
        });
    }
    catch(e){
        alert(e);   
    }
});

其中我得到第一个错误,然后我想停止执行下一个ajax?怎么办?

在第一个ajax调用的错误块中,只需添加return false

error: function (x, y, z) {
                alert("Error - 1");
                return false;
            }

请用这种方式编写代码

function fnMyFunction1(){
  try{
   if(success){
     // call fnMyFunction2
   }
   else{
     // Show Error message
   }
  }
  catch(e){
     // Show Exception message
  }
}

使用try-catch处理异常。

try语句允许您测试代码块中的错误。

catch语句允许您处理错误。

throw语句允许您创建自定义错误。

try {
   try_statements
   if(condition)    throw "Error";
}
[catch (exception_var_1 if condition_1) {
   catch_statements_1
}]
...
[catch (exception_var_2) {
   catch_statements_2
}]
[finally {
   finally_statements
}]

您需要嵌套您的ajax调用,因为您的调用是异步的,每个调用都将立即进行到下一个调用,而无需等待请求完成。因此:

$('#MyFormSubmit').submit(function(){
    try{
    /* Ajax - 1 */
    $.ajax({
           url: 'Any',
           type: 'GET',
           data: 'ID',
           contentType: "application/json;charset=utf-8",
           success: function (data) {
               alert("Success - 1");        
                /* Ajax - 2 */
                $.ajax({
                       url: 'Any',
                       type: 'GET',
                       data: 'ID',
                       contentType: "application/json;charset=utf-8",
                       success: function (data) {
                           alert("Success - 2");    
                            /* Ajax - 3 */
                            $.ajax({
                                   url: 'Any',
                                   type: 'GET',
                                   data: 'ID',
                                   contentType: "application/json;charset=utf-8",
                                   success: function (data) {
                                       alert("Success - 3");               
                                    },
                                    error: function (x, y, z) {
                                        alert("Error - 3");
                                    }
                                });
                            }
                            catch(e){
                                alert(e);   
                            }
                        },
                        error: function (x, y, z) {
                            alert("Error - 2");
                        }
                    });
            },
            error: function (x, y, z) {
                alert("Error - 1");
            }
        });
});

使用以下编码样式

function f1(){
  try{
   if(success){
     // call f2
   }
   else{
     // Show Error message
   }
  }
  catch(e){
     // Show Exception message
  }
}