正则表达式或异常处理?

Cha*_*dra 5 java regex

以下哪一项是检查字符串是否为浮点数的更好做法?

try{
 Double.parseDouble(strVal);
}catch(NumberFormatException e){
 //My Logic
}
Run Code Online (Sandbox Code Playgroud)

或者

if(!strVal.matches("[-+]?\\d*\\.?\\d+")){
 //My Logic
}
Run Code Online (Sandbox Code Playgroud)

在性能、维护性和可读性方面?

是的,我想知道哪一种是好的编码习惯?

mel*_*okb 4

  1. 性能:异常很慢,基于异常的逻辑也很慢,所以第二个会更快。
  2. 维护/可靠性:第一个非常清晰,并将随着 Java 框架的更新而不断更新。

话虽这么说,我个人更喜欢第一个。性能是您在架构、数据结构设计等中作为一个整体考虑的问题,而不是逐行考虑。衡量性能并优化实际上慢的部分,而不是您认为可能慢的部分。