Py学习  »  Python

python中try语句的放置位置

Schang • 5 年前 • 1536 次点击  

1我正在学习python,发现很难理解try-and-except语句的位置

def divide (n1, n2):
    try:
        d = n1/n2
    except :
        print("Wrong")

然后除以(10,0)得到正确的“错误”

但是如果我把try放在函数的顶部,它就不起作用了

try:
    def divide (n1, n2):
        d = n1/n2
except :
        print("Wrong")

然后除以(10,0)产生常规的回溯错误。

为什么在第二个例子中excel不起作用?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50271
 
1536 次点击  
文章 [ 5 ]  |  最新文章 5 年前
Ilman Teguh Prasetya
Reply   •   1 楼
Ilman Teguh Prasetya    5 年前

在python中,如果您的execute结果出错,则尝试execute或run。在你的例子2中 定义 (功能)和 定义 在python中,在调用之前不会执行,因此except不起作用

Hari
Reply   •   2 楼
Hari    5 年前

由于函数定义正在尝试。。。除了块而不是函数调用。而且除非调用函数定义,否则函数定义将不会被执行(函数调用应该始终在try…except中)。因此,您提到的第二个代码的效率不足以捕获异常。

下面的代码也可以工作:

def divide (n1, n2):
    d = n1/n2

try:
    divide(12, 0)
except:
    print("Wrong") 
knh190
Reply   •   3 楼
knh190    5 年前

你的第二次尝试只包括 定义 函数,以及 def 也不例外。如果你把这个叫做某处: divide(10, 0) ,它已经在try catch块之外。

U10-Forward
Reply   •   4 楼
U10-Forward    5 年前

这是因为如果不在try except部分中运行函数,它将始终运行,因为函数将始终在不被调用的情况下工作,如果在try except中调用它,它将工作:

try:
    def divide (n1, n2):
        d = n1/n2
    print(divide(0,0))
except :
    print("Wrong")

它将提供:

Wrong

但在所有的解决方案中,你的1个解决方案是最好的。

maxi.marufo
Reply   •   5 楼
maxi.marufo    5 年前

第一个例子是正确的使用方法。

在第二个例子中,定义函数:

    def divide (n1, n2):
        d = n1/n2

所以,当您调用它时,try语句甚至都不执行。try和except语句不在范围内,而且在您想要使用它们的方式上毫无用处。在本例中,如果在到达try时无法定义devide函数,则将打印“错误”输出,但情况并非如此

Here 您将在Python中找到如何处理错误和异常的文档。