在哪里将try语句放在python中

时间:2019-05-24 02:00:10

标签: python try-catch

1我正在学习python,发现难以理解放置try和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)会产生常规的回溯错误。

在第二个示例中,except为何不起作用?

5 个答案:

答案 0 :(得分:2)

这是因为,如果不在try-except部分中运行该函数,它将始终通过,因为一个函数将始终不被调用而起作用,如果在try-except内部对其进行调用,它将起作用:< / p>

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

它将给出:

Wrong

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

答案 1 :(得分:1)

您的第二次尝试捕获仅包括您定义函数的方式,并且您的def也没有例外。而且,如果您在divide(10, 0)某个地方调用它,则它已经在try-catch块之外。

答案 2 :(得分:1)

第一个示例是正确的用法。

在第二个中,您将定义函数:

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

因此,当您调用它时,甚至不会执行try语句。 try和except语句不在范围内,只是在您要使用它们的方式上没有用。在此示例中,“错误”输出将被打印,即使在尝试时无法定义devide函数,情况并非如此

Here,您将找到有关如何使用Python处理错误和异常的文档。

答案 3 :(得分:1)

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

下面的代码也可以工作:

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

try:
    divide(12, 0)
except:
    print("Wrong") 

答案 4 :(得分:0)

python中的

如果执行结果错误,将执行或运行Except。在您的示例2中,您在python中使用 def (fucntion)和 def 之前,它们将不会执行,因此,为什么except无法正常工作