在使用包装类将字符串转换成基本数据类型时,如果字符串的格式不正确,则会出现数字格式异常(NumberFormatException) 。
【示例】NumberFormatException异常
public class Test{
public static void main(String[] args) {
String str = "1234abcf";
System.out.println(Integer.parseInt(str));
}
}
输出:Exception in thread "main" java.lang.NumberFormatException: For input string: "1234abcf" at java.lang.NumberFormatException.forInputString(NumberFormatException.java: 65) at java.lang.Integer.parseInt(Integer.java: 580) at java.lang.Integer.parseInt (Integer.java: 615) at Test.main (Test.java: 4)
数字格式化异常的解决,可以引入正则表达式判断是否为数字:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test{
public static void main(String[] args){
String str = "1234abcf";
Pattern p = Pattern.compile("^\\d+$");
Matcher m = p.matcher(str);
if(m.matches()){ //如果str匹配代表数字的正则表达式,才会转换
System.out.println(Integer.parseInt(str));
}
}
}
注意事项
1. 在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。
2. 运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。
网友评论