使用Integer.parseInt()语法错误[Java]尝试捕获
我试图制作一个简单的方法来测试一个提供的字符串是否只包含数字,为此,我尝试使用try和catch(刚刚学会,我想练习使用它),在这里我尝试解析给定字符串的parseInt(),如果有错误(不是数字),那么它将捕获它并返回false使用Integer.parseInt()语法错误[Java]尝试捕获,java,try-catch,Java,Try Catch,我试图制作一个简单的方法来测试一个提供的字符串是否只包含数字,为此,我尝试使用try和catch(刚刚学会,我想练习使用它),在这里我尝试解析给定字符串的parseInt(),如果有错误(不是数字),那么它将捕获它并返回false public boolean checkNumber(String s){ try(Integer.parseInt(s)){ return true; } catch(Exception E){ ret
public boolean checkNumber(String s){
try(Integer.parseInt(s)){
return true;
}
catch(Exception E){
return false;
}
}
它说我有一个放错位置的构造函数。捕获正确的异常,并将try检查移到块中而不是括号中
try {
Integer.parseInt(s);
return true;
}
catch(NumberFormatException e){
return false;
}
这不是try的正确语法。使用
try
{
Integer.parseInt(s);
return true;
}
catch (Exception ex)
{
return false;
}
语法错误
try {
Integer.parseInt(s);
} catch(Exception e) {
return false;
}
return true;
实际上应该使用正则表达式。。。但这超出了您的问题范围。要详细说明skiwis注释,当使用
integer解析时,位于整数范围之外的数字的字符串表示将引发异常。parseInt
您使用的语法用于“try with resources”。您可能想查找它,它在其他情况下可能很有用。@Khaelid对于所有不是数字的事物,都会抛出并捕获一个异常,这通常比简单的检查慢一个大数量级。异常是针对异常情况的。这是事实,但强制执行空检查是防御性编程,如果s
以空值形式传入,NPE可能会抛出异常,因为盲目检查可能会隐藏其他错误。