不明白为什么Python的Try-Except不生效

0 投票
2 回答
1979 浏览
提问于 2025-04-17 23:29

我的Python程序一直出现UnicodeDecodeError错误,所以我想在代码中使用try-except来绕过这个问题。然而,即使用了try-except,我还是不断收到UnicodeDecodeError的错误提示,程序就是不运行。我是不是用错了try-except?

这是我的代码:

combinedCorpus=[]
line = text.readline().lower()
words_filtered = [word for word in line.split() if len(word) >= 3]
try:
    combinedCorpus.append((words_filtered, "positive")) #this is where my problem is
except UnicodeDecodeError:
    print "Error appending to combinedCorpus."

这是我的错误追踪信息:

    Traceback (most recent call last):
  File "C:\Users\???\Desktop\python\App.py", line 38, in <module>
    print json.dumps(combinedCorpus,indent=2)
  File "C:\Python27\lib\json\__init__.py", line 250, in dumps
    sort_keys=sort_keys, **kw).encode(obj)
  File "C:\Python27\lib\json\encoder.py", line 209, in encode
    chunks = list(chunks)
  File "C:\Python27\lib\json\encoder.py", line 431, in _iterencode
    for chunk in _iterencode_list(o, _current_indent_level):
  File "C:\Python27\lib\json\encoder.py", line 332, in _iterencode_list
    for chunk in chunks:
  File "C:\Python27\lib\json\encoder.py", line 332, in _iterencode_list
    for chunk in chunks:
  File "C:\Python27\lib\json\encoder.py", line 313, in _iterencode_list
    yield buf + _encoder(value)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 4-5: invalid continuation byte

2 个回答

-1

注意,异常是逐层抛出的。我假设程序抛出的异常不是 UnicodeDecodeError。如果你尝试捕获最顶层的异常,应该是 Exception,这样应该可以正常工作。

像下面这样:

try:
    combinedCorpus.append((words_filtered, "positive"))
except Exception as e:
    print "Error appending to combinedCorpus."

如果这样可以正常工作,你应该去找找真正的异常是什么,然后尝试捕获那个异常。

2

我找到了我问题的解决办法。其实,unicode错误是出现在代码后面的部分。

combinedCorpus.append((words_filtered, "positive"))

print json.dumps(combinedCorpus,indent=2)

显然,json.dumps和我的文本不兼容。真是奇怪。

感谢所有回答和评论的人!

撰写回答