哪个异常捕获python中的xxxx错误

Ber*_*ala 5 python exception

给定一个回溯错误日志,我并不总是知道如何捕获一个特定的异常.

我的问题一般是,如何确定要编写哪个"except"子句以处理某个异常.

例1:

  File "c:\programs\python\lib\httplib.py", line 683, in connect
    raise socket.error, msg
error: (10065, 'No route to host')
Run Code Online (Sandbox Code Playgroud)

例2:

return codecs.charmap_encode(input,errors,encoding_table)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position(...)
Run Code Online (Sandbox Code Playgroud)

抓住第二个例子是显而易见的:

try:
    ...
except UnicodeDecodeError:
    ...
Run Code Online (Sandbox Code Playgroud)

我如何抓住第一个错误?

cod*_*ape 4

查看堆栈跟踪。引发异常的代码是:raise socket.error, msg

所以你的问题的答案是:你必须抓住socket.error

import socket
...
try:
    ...
except socket.error:
    ...
Run Code Online (Sandbox Code Playgroud)