在Python中是否有任何用于raise foo,bar的用例?

时间:2017-03-08 13:26:08

标签: python exception python-2.x

Python 2支持raise的以下语法:

raise FooException(bar) # call
raise FooException, bar # positional

我认为位置语法只是旧Python支持任意值作为例外的历史结果。

是否存在使用调用语法无法完成(或更详细)的位置语法的用例?

1 个答案:

答案 0 :(得分:0)

我正在回答问题的编辑版本,主要是

  

然而,即使是Python 3也会考虑提高Foo()并将Foo提升为等效。

“call”语法(@{ @model IEnumerable<TestWebGirdContextMenu.Models.User> } <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.4.3/jquery.contextMenu.min.css" rel="stylesheet" type="text/css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.4.3/jquery.contextMenu.min.js" type="text/javascript"></script> <div class="container"> <h2>WebGrid Context Menu</h2> <div class="row"> <div class="col-lg-12"> @{ var grid = new WebGrid(Model); } @grid.GetHtml(htmlAttributes: new { id = "webGrid" }) </div> </div> </div> <script> $(function () { $.contextMenu({ selector: "#webGrid tbody tr", callback: function (key, options) { var m = "clicked: " + key; window.console && console.log(m) || alert(m); }, items: { "edit": { name: "Edit", icon: "edit" }, "cut": { name: "Cut", icon: "cut" }, "copy": { name: "Copy", icon: "copy" }, "paste": { name: "Paste", icon: "paste" }, "delete": { name: "Delete", icon: "delete" }, "sep1": "---------", "quit": { name: "Quit", icon: function () { return 'context-menu-icon context-menu-icon-quit'; } } } }); $('.context-menu-one').on('click', function (e) { console.log('clicked', this); }); }); </script> </body> )将任意对象raise Foo(obj)分配给Exception对象的obj元组属性。虽然任何对象都可以用作args,但这主要用于自定义字符串:

obj

在打印异常对象时实际使用了这个try: raise ValueError('a custom string') except ValueError as e: print(e.args[0]) # 'a custom string' print(e.args) # ('a custom string',) 元组,因此它非常便于记录:

args

try: raise ValueError('custom error', 2) except ValueError as e: print(e) # ('custom error', 2) raise ValueError()分配一个空元组,exc_obj.args也是如此。

这甚至适用于多个对象。在这种情况下,我们将得到一个相同长度的元组:

raise ValueError