Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
刚刚学习了Javascript中的异常。需要帮助才能更好地理解 函数multipliatorunitfailure(){} 函数原语乘法(a,b){ if(Math.random()_Javascript_Exception - Fatal编程技术网

刚刚学习了Javascript中的异常。需要帮助才能更好地理解 函数multipliatorunitfailure(){} 函数原语乘法(a,b){ if(Math.random()

刚刚学习了Javascript中的异常。需要帮助才能更好地理解 函数multipliatorunitfailure(){} 函数原语乘法(a,b){ if(Math.random(),javascript,exception,Javascript,Exception,大家好!刚刚完成了关于表达式的雄辩javascript一章。给出了错误的函数原语Multiple,该原语一半时间返回参数a和b的有效乘法,另一半时间抛出一个类型为multipatorunitfailure的异常,一个自定义生成的异常。我被要求通过调用原语乘法,使可靠的倍数100%正确地乘以2个数字a和b,直到它不会向我抛出一个MultiplicatorRunitFailure错误。如果它抛出任何其他错误,我将放弃并抛出该错误。我填写了我的代码,但有时会在控制台中获取[object]。为什么?您可

大家好!刚刚完成了关于表达式的雄辩javascript一章。给出了错误的函数原语Multiple,该原语一半时间返回参数a和b的有效乘法,另一半时间抛出一个类型为multipatorunitfailure的异常,一个自定义生成的异常。我被要求通过调用原语乘法,使可靠的倍数100%正确地乘以2个数字a和b,直到它不会向我抛出一个MultiplicatorRunitFailure错误。如果它抛出任何其他错误,我将放弃并抛出该错误。我填写了我的代码,但有时会在控制台中获取[object]。为什么?

您可能看到对
primitiveMultiply
的第二次调用引发了异常,该异常不在try块中。尝试删除此调用,而不是在第一个调用周围放置一个循环,如:

function MultiplicatorUnitFailure() {}

function primitiveMultiply(a, b) {
  if (Math.random() < 0.5)
    return a * b;
  else
    throw new MultiplicatorUnitFailure();
}

function reliableMultiply(a, b) {
  var x;
  try {x = primitiveMultiply(a, b);}
      catch(error){  
        if (error instanceof MultiplicatorUnitFailure) 
           x = primitiveMultiply(a,b);
        else 
        throw error;
      }
   return x;

}

您可能看到对
primitiveMultiply
的第二次调用引发了异常,该异常不在try块中。尝试删除此调用,而不是在第一个调用周围放置一个循环,如:

function MultiplicatorUnitFailure() {}

function primitiveMultiply(a, b) {
  if (Math.random() < 0.5)
    return a * b;
  else
    throw new MultiplicatorUnitFailure();
}

function reliableMultiply(a, b) {
  var x;
  try {x = primitiveMultiply(a, b);}
      catch(error){  
        if (error instanceof MultiplicatorUnitFailure) 
           x = primitiveMultiply(a,b);
        else 
        throw error;
      }
   return x;

}