gpt4 book ai didi

java - 如果使用 Long.parseLong() 解析失败,如何抛出异常?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:46:08 30 4
gpt4 key购买 nike

我正在尝试编写某种堆栈计算器。

这是我处理 push 命令的代码的一部分。我只想推送整数,所以我必须摆脱任何无效的字符串,如 foobar(无法解析为整数)或 999999999999(超出整数范围) .

strings 在我的代码中是一个字符串表,其中包含 POPPUSH 等命令、数字和已经被白色字符分割的随机杂乱.

主要问题:

我在为 long parseNumber = Long.parseLong(strings[i]); 抛出异常时遇到困难 - 我不知道如何处理这种情况,当 strings [i] 无法解析为 long,随后又解析为 integer

while (i < strings.length) {
try {
if (strings[i].equals("PUSH")) {
// PUSH
i++;
if (strings[i].length() > 10)
throw new OverflowException(strings[i]);
// How to throw an exception when it is not possible to parse
// the string?
long parseNumber = Long.parseLong(strings[i]);

if (parseNumber > Integer.MAX_VALUE)
throw new OverflowException(strings[i]);

if (parseNumber < Integer.MIN_VALUE)
throw new UnderflowException(strings[i]);
number = (int)parseNumber;
stack.push(number);
}
// Some options like POP, ADD, etc. are omitted here
// because they are of little importance.
}
catch (InvalidInputException e)
System.out.println(e.getMessage());
catch (OverflowException e)
System.out.println(e.getMessage());
catch (UnderflowException e)
System.out.println(e.getMessage());
finally {
i++;
continue;
}
}

最佳答案

Long.parseLong(String str) 如果由于任何原因无法解析字符串,则抛出 NumberFormatException。您可以通过为您的尝试添加一个 catch block 来捕获相同的内容,如下所示:

catch ( NumberFormatException e) {
System.out.println(e.getMessage());
}

关于java - 如果使用 Long.parseLong() 解析失败,如何抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29953838/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com