首页 > 解决方案 > 如何在 Promise 函数中抛出不同的错误?

问题描述

对于测试,我希望所有代码都被覆盖,并且我想拒绝这个 Promise 函数中每个步骤的不同的自写错误。

function convertToXML(b64DataPara) {

return new Promise(function(resolve, reject) {

    var b64Data = b64DataPara;

    if(b64Data === '' || b64Data === undefined){
        return reject(new Error(errorMessages.B64Undefined));
    }

    if(typeof b64Data === 'number'){
        return reject(new Error(errorMessages.StringNeededNotNumber));
    }

    // Decode base64 (convert ascii to binary)

    var strData = atob(b64Data);
    
    if (strData === undefined){
        return reject(new Error(errorMessages.invalidCharacterInB64));
    }

    // Convert binary string to character-number array
    var charData = strData.split('').map(function(x){return x.charCodeAt(0);});

    // Turn number array into byte-array
    var binData = new Uint8Array(charData);

    // Decompress data
    var data = pako.inflate(binData);

    // Convert gunzipped byteArray back to ascii string:
    var xmlData = String.fromCharCode.apply(null, new Uint16Array(data));

    resolve(xmlData);

})

我有两个想法:

  1. 用 if / else 包裹每个步骤
  2. 将 Promise 函数中的所有代码放在 try-catch 中,并在 catch 块中处理 if else 等所有错误。

这两个想法对我来说似乎都不专业。所以我想知道最好/优雅的方法是什么。还是您认为所有子步骤都应该在它自己的 Promise 函数中?

标签: javascripterror-handlingpromise

解决方案


推荐阅读