我编写了一个简单的函数来检查传递的参数是0,正数还是负数。我知道一个事实,传递的参数是一个数字,而不是任何其他数据类型。我希望得到undefined
作为输出,但如果传递的参数是零或负数,我希望可以打印throw语句中提供的文本。
我已经检查了Throw statement in JavaScript gives "undefined undefined" output处的问题, 那并不能解决我的问题。
我还尝试过定义一个Error对象,如下所示:
ZeroError = new Error ("Zero Error");
NegativeError = new Error ("Negative Error");
,然后将这些错误用作“抛出”的参数:
throw ZeroError;
throw NegativeError;
对于零值和负值我都得到相同的undefined
输出。
这是我的功能:
function isPositive(a)
{
if (a === 0) throw "Zero Error";
if (a < 0) throw "Negative Error";
if (a > 0) return ("YES");
}
当a> 0时输出为“ YES”时,却得到undefined
当a为零或负数时。我希望当a为零时出现“零错误”,而当a为负值时出现“负错误”。
答案 0 :(得分:1)
throw
不返回任何内容,它引发一个异常,将其替换为return
,您将获得自己的价值。
throw语句引发用户定义的异常。当前函数的执行将停止(不会执行throw之后的语句),并将控制权传递给调用堆栈中的第一个catch块。如果调用方函数之间不存在catch块,则程序将终止。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw
编辑:如果需要捕获异常,请查看try/catch
:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
function isPositive(a) {
if (a === 0) throw "Zero Error";
if (a < 0) throw "Negative Error";
if (a > 0) return ("YES");
}
let result;
try {
result = isPositive(0);
} catch (e) {
if (e === "Zero Error") result = "Zero Error";
if (e === "Negative Error") result = "Negative Error";
}
答案 1 :(得分:1)
问题的优化解决方案。我希望每个人都清楚:)
function isPositive(a) {
try {
if (a == 0) throw 'Zero Error';
if (a < 0) throw 'Negative Error';
return 'YES';
} catch (throwedErrorMessage) {
return throwedErrorMessage;
}
}
答案 2 :(得分:0)
function Positive(a)
{
try {
if (a === 0)
throw "Zero Error";
if (a < 0) throw "Negative Error";
if (a > 0) return ("YES");
document.write("hello")
}
catch(err) {
document.write("hello");
}
}
Positive();
答案 3 :(得分:0)
这有效:
function isPositive(a) {
try {
if (a < 0) {
throw "Negative Error"
} else
if (a == 0) {
throw "Zero Error";
} else {
return "YES"
}
}
catch (err) {
return err;
}
}
答案 4 :(得分:0)
这对我来说非常合适:
function isPositive(a) {
if(a>0) {
return 'YES';
}
if (a===0) {
throw new Error("Zero Error");
}
else if (a<0) {
throw new Error("Negative Error");
}
}
不知道使用throw的问题是什么,就是这样。稍后当我找到真正的原因时,我将在这里添加。
https://humanwhocodes.com/blog/2009/03/10/the-art-of-throwing-javascript-errors-part-2/