假设我有一个连续运行的程序,等待来自标准输入程序的命令。使用while将一直等待订单的方法称为“run”。你知道吗
如您所见,当run()获得某个顺序时,它们会将该顺序传递给某个函数。你知道吗
当我运行程序时,每次我发出一个可能导致错误的命令(比如:Index error),它就会中断并关闭(显然)
我决定尝试用try/except
捕捉错误
def a(order):
try:
<some algorithm>
return something
except Exception, error:
stderr.write(error)
stderr.flush()
def b(order):
try:
<some algorithm>
return something
except Exception, error:
stderr.write(error)
stderr.flush()
def run(order)
while stdin.notclosed:
try:
read stdin
if stdin==specific order :
x=a(stdin order)
else:
x=b(stdin order)
except Exception,error:
stderr.write(error)
stderr.flush()
run()
但是,给出命令的程序似乎无法读取错误。我的分析师认为,发出命令的程序似乎只在读取命令的程序结束后才开始读取stderr
。然而,由于try/catch
,程序永远不会结束。不管怎样,有没有办法抓住错误,写出来,然后结束它。(错误可能来自任何函数)
PS:假设你不能修改或读取发出命令的程序。(这是竞争,我之所以这么说,是因为当我访问stderr
时,它是空的。)
不确定这是否满足您的需要,但是您可以通过在
except
块的末尾添加一个空的raise
语句来重新引发正在处理的异常,如下所示。这将导致异常由下一个更高的try/except
块(如果有)处理,或者终止程序(如果没有)示例:
相关问题 更多 >
编程相关推荐