前言
什么是异常?
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。
当Python发生异常时我们需要捕获处理它,否则程序会终止执行。
一、python标准异常
二、应用实例
1、try/except():/except
代码:
while True: try: x = int(input("请输入一个整数: ")) break except (RuntimeError, TypeError, NameError,ValueError):#利用元组一次性判断多种异常 print("您输入的不是整数,请再次尝试输入!") except: pass#不是上述异常时不处理继续执行 #break#不是上述异常时不处理直接跳出
效果:
解析:
可以利用元组一次性判断多种异常如:
except (RuntimeError, TypeError, NameError,ValueError):
print("您输入的不是整数,请再次尝试输入!")
也可以用break和pass来跳过和跳出异常
except:
pass#不是上述异常时不处理继续执行
#break#不是上述异常时不处理直接跳出
最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出
2、try/except...else
try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。
else 子句将在 try 子句没有发生任何异常的时候执行。
以下实例在 try 语句中判断文件是否可以打开,如果打开文件时正常的没有发生异常则执行 else 部分的语句,读取文件内容 。
for arg in sys.argv[1:]: try: f = open(arg, 'r') except IOError: print('cannot open', arg) else: print(arg, 'has', len(f.readlines()), 'lines') f.close()
使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免一些意想不到,而 except 又无法捕获的异常。
3、try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。
try: runoob() except AssertionError as error: print(error) else: try: with open('file.log') as file: read_data = file.read() except FileNotFoundError as fnf_error: print(fnf_error) finally: print('这句话,无论异常是否发生都会执行。')
效果图:
4、抛出异常
raise [Exception [, args [, traceback]]]
以下实例如果 x 大于 5 就触发异常:
x = 10
if x > 5:
raise Exception('x 不能大于 5。x 的值为: {}'.format(x))
三、总结
1、用try可以抛出我们易于理解的异常,帮助用户处理异常
2、运用try来调试我们的程序,可特定跳过或跳出
3、运用finally定义特定的语句的来抛出固定的语句。