Python中无法捕获异常并抛出错误的问题排查
问题原因与修正方案
你的代码没捕获到异常的核心原因是捕获的异常类型不匹配:
- 当用
float()尝试转换像'a'这种无法解析为数字的字符串时,Python抛出的是ValueError,而非你代码里指定的TypeError。 TypeError通常是传入的参数类型完全不兼容时才会触发,比如给float()传列表、字典这类根本无法进行数值转换的对象。
修正后的代码
把捕获的异常类型改成ValueError即可:
initial_cash = 'a' try: initial_cash = float(initial_cash) except ValueError: raise TypeError("Initial cash amount should be float or int")
如果想同时处理可能出现的TypeError(比如传入非字符串/数字类型的情况),也可以同时捕获两种异常:
initial_cash = 'a' try: initial_cash = float(initial_cash) except (TypeError, ValueError): raise TypeError("Initial cash amount should be float or int")
内容的提问来源于stack exchange,提问作者Lopez
相关产品推荐
相关产品推荐

