NumberFormatException
是 Java 中的一种运行时异常,通常在尝试将字符串转换为数值类型(如 Integer
, Long
, Float
, Double
等)时发生,如果字符串的格式不正确,就会抛出这个异常。对于负整数,格式错误通常指的是字符串中包含了非数字字符,或者字符串表示的数值超出了目标数值类型的范围。
NumberFormatException
主要出现在以下场景:
int
类型,而该字符串表示的数值超出了 int
的最大值。为了避免 NumberFormatException
,可以采取以下措施:
public static int safeParseInt(String str) {
if (str == null || !str.matches("-?\\d+")) {
throw new IllegalArgumentException("Invalid number format");
}
return Integer.parseInt(str);
}
try-catch
块:在转换时使用 try-catch
块捕获异常,并进行适当的错误处理。public static int parseInteger(String str) {
try {
return Integer.parseInt(str);
} catch (NumberFormatException e) {
System.err.println("Error parsing integer: " + e.getMessage());
return 0; // 或者抛出自定义异常
}
}
public static int safeParseInt(String str) {
long value = Long.parseLong(str);
if (value < Integer.MIN_VALUE || value > Integer.MAX_VALUE) {
throw new NumberFormatException("Value out of range for int");
}
return (int) value;
}
通过这些方法,可以有效地避免和处理 NumberFormatException
,确保程序的健壮性和可靠性。
领取专属 10元无门槛券
手把手带您无忧上云