python - 引发异常是测试输入类型的可接受方法

标签 python regex exception

假设我要求用户输入一个 float ,我的直觉是使用正则表达式。

'(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?$'

但是,您可以通过抛出异常来实现相同的检查。

try:
    x = float(raw_input("Please enter a number: "))
except ValueError:
    print "That was no valid number."
print "you entered " + str(x)    

抛出异常比使用正则表达式有哪些优点和缺点?

最佳答案

让 Python 检查值并处理 ValueError 的优点有很多。你有明确的意图。您可以立即知道在每种情况下它应该做什么以及为什么。您正在使用该语言,而不是尝试通过正则表达式自己完成所有逻辑。

正则表达式方法不太容易阅读或理解,如果做得不好,可能会引入错误。不要重新发明轮子。

Python 被设计为作为一种自然的控制结构来有效地处理异常,因此像这样检查 ValueError 是很好的。相比之下,异常在 C++ 中代价高昂,因为它们在资源管理中实现了不同但非常重要的设计功能,因此在 C++ 程序中使用异常作为逻辑的正常部分并不是一个好主意。

关于python - 引发异常是测试输入类型的可接受方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609241/

相关文章:

javascript - 正则表达式/Javascript;负选择两个字符的重复

regex - 如何从perl中的字符串中删除最后n个数字字符

c++ - 如何处理 C++ 异常 3765269347

java - java中的异常或null

Python 请求重定向登录

python - 如何在 flask-admin 中引用 ModelView

javascript - 性能 - String.charAt(0) 与/^.{1}/

java - RC4 算法的 KeyGenerator 异常

Python:DLL 加载失败:%1 不是有效的 Win32 应用程序

python - 使用 Virtualenv 和 Apache 部署 Django