0

使用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

4

1 回答 1

0

Try catch 不会忽略方法。它以正常流程执行它,如果引发异常,它会处理它。考虑以下:

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

try:
    raising_method()
except Exception as e:
    pass

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

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

于 2014-10-03T08:50:24.810 回答