如何查找float()函数可能抛出的所有异常类型
如何查找
float()可能抛出的所有异常类型 我知道调用float("foo")会抛出ValueError,因此编写了如下方法:
def cast_to_float(value: str) -> float: try: return float(value) except ValueError as e: # 处理异常
但我刚意识到float()还可能抛出OverflowError,因此想了解是否还有其他未捕获的异常类型。我清楚使用except Exception是不良实践,且已经查阅过官方文档和IDE的“转到定义”功能,未找到异常抛出的相关信息。
可行的解决方法
1. 查看CPython源码实现
Python的内置float()函数底层由CPython实现,直接查看源码是最准确的方式。核心逻辑在Objects/floatobject.c文件的PyFloat_FromString函数中,能找到它可能抛出的异常:
TypeError:传入的参数类型无法转换为浮点数时(比如传入列表、None等非字符串/非数值类型)ValueError:参数类型合法但格式无效时(比如"1.2.3"这类无法解析的字符串)OverflowError:数值超出浮点数可表示范围时(比如"1e400",超过Python浮点数最大范围~1.8e308)
2. 手动做边界测试
通过构造各种极端输入,实际测试float()的异常抛出情况:
- 测试类型不兼容:
float([])→ 抛出TypeError - 测试超大数值:
float("1e400")→ 抛出OverflowError - 测试无效格式:
float("abc")、float("1.2.3")→ 抛出ValueError - 测试
None输入:float(None)→ 抛出TypeError
3. 参考Python类型转换的通用规则
内置类型转换函数通常遵循统一的异常逻辑:
- 类型不匹配时抛出
TypeError - 类型匹配但值无法解析时抛出
ValueError - 值超出目标类型的表示范围时抛出
OverflowError
内容的提问来源于stack exchange,提问作者ebosi
相关产品推荐
相关产品推荐

