我正在用python編程一個IRC bot。所有代碼都在一行中。我知道這不是應該如何編寫python程序,但這是實驗性的。我想從IRC執行oneliner腳本,但我不知道如何處理異常。在一行中處理Python eval()異常處理
是否有可能評估一個python表達式並處理可能的異常在一行中? AFAIK嘗試 - 除了不能在一行工作。
這是當前的代碼:http://pastebin.com/f34brq91。 這並不是很容易理解,但沒有必要理解它來回答我的問題。 :)
我正在用python編程一個IRC bot。所有代碼都在一行中。我知道這不是應該如何編寫python程序,但這是實驗性的。我想從IRC執行oneliner腳本,但我不知道如何處理異常。在一行中處理Python eval()異常處理
是否有可能評估一個python表達式並處理可能的異常在一行中? AFAIK嘗試 - 除了不能在一行工作。
這是當前的代碼:http://pastebin.com/f34brq91。 這並不是很容易理解,但沒有必要理解它來回答我的問題。 :)
不,沒有辦法將異常處理程序放在一行中。您只能將簡單的語句放在一行上,並且try
- except
是一個複合語句。
也沒有功能可以讓你吞下例外。
您能夠在一行中關閉此類功能的唯一方法是,從原始字節創建一個新的代碼對象,該對象定義構造的全部字節的字節碼。使用該字節碼,您可以繼續創建一個吞下異常的函數。
但是,我不打算爲你寫一個。抱歉。
我找到了一個方法:eval(compile('def exc(function,catch_function,e = Exception):\ n試試:\ n'+'function()\ n除了e:\ n'+'catch_function()', '','exec')) – felixbade
...爲什麼......... – TerryA
我只是要離開這裏http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html –
這個問題不會有利於社區,它是促進不良習慣和不安全的節目。以前,這將被視爲一個「太本地」問題。 –