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为何不起作用?
答案 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)
如果执行结果错误,将执行或运行Except。在您的示例2中,您在python中使用 def (fucntion)和 def 之前,它们将不会执行,因此,为什么except无法正常工作