gpt4 book ai didi

python - 有没有办法找出哪个 Python 方法可以引发哪个异常或错误

转载 作者:行者123 更新时间:2023-11-28 20:37:11 24 4
gpt4 key购买 nike

有没有办法找出哪个 Python 方法可以引发哪个异常或错误?我在官方 Python 文档中没有找到太多相关信息。

最佳答案

一般来说,答案是否定的。一些异常被记录在案,但大多数只是遵循可以学习的一般模式。 SyntaxError 首先被检查,并在语法无效代码时引发。 NameError 在变量未定义(尚未分配或拼写错误)时出现。 TypeError 因参数数量错误或数据类型不匹配而引发。 ValueError 表示类型正确,但该值对函数没有意义(即 math.sqrt() 的负输入。如果该值是序列查找中的索引,引发 IndexError。如果值是映射查找的键,则引发 KeyError。另一个常见的异常是缺少属性的 AttributeErrorIOError 用于失败的 I/O。OSError 用于操作系统错误。

除了学习常见模式外,通常很容易运行一个函数并查看它在给定情况下引发的异常。

一般来说,函数无法知道或记录所有可能的错误,因为输入可能会引发自己的异常。考虑这个函数:

def f(a, b):
return a + b

如果参数数量错误或a 不支持__add__ 方法,它会引发TypeError。但是,基础数据可能引发不同的异常:

>>> f(10)

Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
f(10)
TypeError: f() takes exactly 2 arguments (1 given)
>>> f(10, 20)
30
>>> f('hello', 'world')
'helloworld'
>>> f(10, 'world')

Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
f(10, 'world')
File "<pyshell#2>", line 2, in f
return a + b
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> class A:
def __init__(self, x):
self.x = x
def __add__(self, other):
raise RuntimeError(other)

>>> f(A(5), A(7))

Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
f(A(5), A(7))
File "<pyshell#2>", line 2, in f
return a + b
File "<pyshell#12>", line 5, in __add__
raise RuntimeError(other)
RuntimeError: <__main__.A instance at 0x103ce2ab8>

关于python - 有没有办法找出哪个 Python 方法可以引发哪个异常或错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43645187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com