在Python中,异常处理,主要是try except语句,通常语法格式如下.
try:
代码块1
except Exception as e:
print(e)
代码2
try语句按照如下方式工作;
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。
我们来看个简单的例子
a = int(input("type a number:"))
b = int(input("type another number:"))
print(a/b)
运行一下,结果如下:
>>type a number:
>>10
>>type another number:
>>5
>>2
程序看起来运行正常。但是,如果用户第二个数字输入的是0,则会出现问题,如下所示:
>>type a number:
>>10
>>type another number:
>>0
>>ZeroDivisionError:integer division or modulo by zero
这里不能指望用户不会输入0作为第二个数字。其解决方法是使用异常处理(exception handing),支持测试错误条件,在错误发生时捕获异常,然后决定如何处理。
异常处理使用try和except关键字。在你修改程序使用异常处理之后,如果用户第二个数字输入0,程序不会报错,而是会打印一段话告诉用户不要输入0。
try从句包含可能会发生的错误,except从句包含仅在错误发生时执行的代码。下面是在程序中进行异常处理的一个示例,这样用户输入0作为第二个数字,程序不会崩溃:
a = int(input("type a number:"))
b = int(input("type another number:"))
try:
print(a/b)
except ZeroDivisionError:
print(“b cannot be zero!”)
再运行一下,结果如下:
>>type a number:
>>10
>>type another number:
>>0
>>b cannot be zero!