在Python中,是否可以在代码块中测试错误,如果出现错误,可以执行某些操作;如果没有,还做别的什么?
伪代码看起来像
checkError:
print("foobar" + 123)
succeed:
print("The block of code works!")
fail:
print("The block of code does not work!")
这当然会每次都失败;这种技术将与变量一起使用。
另一种解决方法可能是拥有一个独立的代码块,这样如果在那里发生错误,其他代码就会继续:
global example
example = "failure"
isolate:
print("foobar" + 123)
example = "success"
if example == "success":
print("The block of code worked without errors.")
elif example == "failure":
print("The block of code had an error and stopped prematurely")
else:
print("???")
同样,每次都会失败,并且在应用程序中,它将与变量一起使用。
答案 0 :(得分:3)
听起来像是在寻找exceptions
https://docs.python.org/2/tutorial/errors.html
# checkError: becomes
try
# some test
if x > 0:
raise AssertionError("Something failed...")
print("The block of code works!")
except:
print("The block of code does not work!")
像这样的东西
答案 1 :(得分:1)
你想要一个try / except并捕获可能发生的任何特定错误/错误:
def test(a,b):
try:
res = a/b
print(res)
print("The block of code works!")
except ZeroDivisionError:
print("The block of code does not work!")
如果没有异常,您将看到res和“代码块工作!”,如果有,您将看到“代码块不起作用!”:
In [26]: test(10,2)
5
The block of code works!
In [27]: test(10,0)
The block of code does not work!
你不想捕捉每一个异常,只捕捉你期望在期望块中发生的任何事情,一个裸露的,除非通常不是一个好主意。
您可以捕获多个例外:
def test(a,b):
try:
res = a/b
print(res)
print("The block of code works!")
except (ZeroDivisionError, TypeError):
print("The block of code does not work!")
In [34]: test(10,2)
5
The block of code works!
In [35]: test(10,0) # ZeroDivisionError
The block of code does not work!
In [36]: test(10,"foo") # TypeError
The block of code does not work!
答案 2 :(得分:0)
根据您正在做的事情,您可能会查看try / except块。您的代码看起来像这样:
try:
do_something()
handle_success()
except:
handle_failure()
在这种情况下,handle_failure()
调用期间抛出异常时会调用do_something()
。
如果您的代码没有抛出异常,则需要返回一个值,该值的结果可以在运行时检查。布尔返回值可能如下所示:
if do_something():
success()
else:
failure()
根据您的函数返回的内容,if / else可能看起来不同。