Python 2支持raise
的以下语法:
raise FooException(bar) # call
raise FooException, bar # positional
我认为位置语法只是旧Python支持任意值作为例外的历史结果。
是否存在使用调用语法无法完成(或更详细)的位置语法的用例?
答案 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