当一个 except 代码块同时处理多个异常时,要想知道当前处理的到底是哪种异常,需要访问异常信息。 所有的异常对象都包含了以下常用属性和方法: args:返回异常的错误编号和描述字符串; strerror:返回异常信息,但不包括异常信息的类型; errno:返回异常的错误编号; reprerror:返回较全的异常信息,包括异常信息的类型;
时间: 2024-02-24 09:55:28 浏览: 63
新手常见Python错误及异常解决处理方案
没错,你说得很对。如果在一个 `except` 代码块中同时处理多个异常,我们可以通过访问异常对象的属性来判断当前处理的是哪种异常。
下面是常用的几个异常对象属性和方法:
- `args` 属性:返回异常的错误编号和描述字符串。可以通过 `str(e.args)` 将其转换为字符串输出。
- `strerror` 属性:返回异常信息,但不包括异常信息的类型。可以通过 `e.strerror` 直接输出。
- `errno` 属性:返回异常的错误编号。可以通过 `e.errno` 直接输出。
- `reprerror` 方法:返回较全的异常信息,包括异常信息的类型和其他一些信息。可以通过 `e.__repr__()` 或 `repr(e)` 输出。
下面是一个示例代码,演示如何使用这些属性和方法来处理多个异常并输出异常信息:
```python
try:
# some code that may raise exceptions
pass
except (ValueError, TypeError) as e:
print("Caught an exception:", e)
print("args:", str(e.args)) # 异常的错误编号和描述字符串
print("strerror:", e.strerror) # 异常信息,但不包括异常信息的类型
print("errno:", e.errno) # 异常的错误编号
print("reprerror:", repr(e)) # 较全的异常信息,包括异常信息的类型和其他一些信息
```
在这个代码中,我们使用了一个元组 `(ValueError, TypeError)` 来同时处理这两种异常。当捕获到异常时,我们输出了异常对象,并访问了它的 `args`、`strerror`、`errno` 和 `reprerror` 属性和方法来获取更多的异常信息。
希望这个示例代码对你有所帮助。如果你还有其他问题,欢迎随时问我。
阅读全文