2013-07-25 40 views
-1

我正在用python编程一个IRC bot。所有代码都在一行中。我知道这不是应该如何编写python程序,但这是实验性的。我想从IRC执行oneliner脚本,但我不知道如何处理异常。在一行中处理Python eval()异常处理

是否有可能评估一个python表达式并处理可能的异常在一行中? AFAIK尝试 - 除了不能在一行工作。

这是当前的代码:http://pastebin.com/f34brq91。 这并不是很容易理解,但没有必要理解它来回答我的问题。 :)

+1

...为什么......... – TerryA

+2

我只是要离开这里http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html –

+4

这个问题不会有利于社区,它是促进不良习惯和不安全的节目。以前,这将被视为一个“太本地”问题。 –

回答

1

不,没有办法将异常处理程序放在一行中。您只能将简单的语句放在一行上,并且try - except是一个复合语句。

也没有功能可以让你吞下例外。

您能够在一行中关闭此类功能的唯一方法是,从原始字节创建一个新的代码对象,该对象定义构造的全部字节的字节码。使用该字节码,您可以继续创建一个吞下异常的函数。

但是,我不打算为你写一个。抱歉。

+0

我找到了一个方法:eval(compile('def exc(function,catch_function,e = Exception):\ n试试:\ n'+'function()\ n除了e:\ n'+'catch_function()', '','exec')) – felixbade