Try-Except-Pass:写下右下角不会像我期望的那样失败

时间:2014-10-03 08:01:38

标签: python try-catch python-curses

使用python的curses模块我知道在右下角写入会引发错误(与光标没有“下一个地方”有关)。

但我不在乎;我想要的只是在可能的情况下写一个角色,否则没什么大不了的。所以我虽然使用了try-except-pass构造

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import curses

def doStuff(stdscr):
    Y , X = stdscr.getmaxyx()       # get screen size

    try:
        stdscr.addch(Y-1,X-1,'X')   # try to print in forbiden corner
    except:
        pass                        # do nothing when error is raised

    stdscr.refresh()
    stdscr.getch()

curses.wrapper(doStuff)

我认为它会“通过”并忽略“addch”指令。 但令我惊讶的是这个角色被打印出来了!

有人可以解释一下原因吗?

ps:我确认没有try-except结构,我得到:

  

_curses.error:addch()返回ERR

1 个答案:

答案 0 :(得分:0)

尝试catch不会忽略方法。它在正常流程中执行它,并引发IF异常处理它。请考虑以下事项:

def raising_method():
    print "a"
    print "b"
    raise Exception

try:
    raising_method()
except Exception as e:
    pass

“a”和“b”仍将被打印。

可能是你的问题?我不知道curses模块,所以不能告诉你任何模块特定的。