try: <语句> except [<异常的名称> [, <异常类的实例变量名称>]]: <异常的处理语句> [else: <没有异常产生时的处理语句>]在中括号
[]
内的语法,表示是可以省略的。提示:异常的名称可以是空白的,表示此 except 语句处理所有类型的异常。异常的名称也可以是一个或多个。可以使用不同的 except 语句处理不同的异常。
例如,下面捕捉 ZeroDivisionError 异常,并显示“数值不能除以零”的字符串:try: 12/0 except ZeroDivisionError: print("数值不能除以零")输出结果如下:
s=[100,200,300,400] def get (n): try: if n < 200: data = s[4] #IndexError异常 else: file = open(100,200,300,400) #TypeError异常 except (IndexError, TypeError): print ("发生异常") get (100) get (200)保存并运行程序,输出结果如下:
a = [100, 200, 300,400] def getn(n): try: if n < 200: data = a[4] else: file = open(100,200,300,400) except IndexError: print ("a列表的索引值错误") except TypeError: print ("open()函数的参数类型错误") getn(100) getn(300)输出结果如下:
a = [100, 200, 300,400] def getn(n): try: if n < 200: data = s[4] else: file = open(100,200,300,400) except: print ("捕获所有的异常") getn(100) getn(300)输出结果如下:
注意:这种全捕捉的方式在实际开发中需要特别注意,因为这样的捕捉方式会捕获所有预先想到的错误。
注意,使用 else 语句时,一定要有 except 语句才行。
【示例4】异常中的 else。def get(n): try: if n == 100: data = s[4] elif 200 <= n <= 500: file = open(100,200,300) except: print ("有错误发生") else: print ("没有错误发生") get(100) get(300) get(800)输出结果如下:
a = ["100", "200", "苹果", "香蕉", "100"] sm = 0 for n in a: try: sm += int(n) except: pass print (sm)输出结果如下:
>>>x = [100, 200, 300] >>>print (x[8]) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range从运行结果可以看出,输出了一个 IndexError 异常,信息字符串是“list index out of range”。
try: x = [100, 200, 300] print (x[8]) except IndexError as inst: print (inst.args[0])输出结果如下:
错误号码,错误信息字符串,[文件名称]
文件名称有可能不出现。try: file = open("mm", "r") except FileNotFoundError as inst: print (inst.args)输出结果如下:
错误信息字符串,(文件名称,行号,行内偏移值,文字)
请看下面的代码:try: a = "100 >>>30" exec (a) except SyntaxError as inst: print (inst.args)输出结果如下:
try: 12 / 0 except ZeroDivisionError as errorMsg: print (errorMsg)输出结果如下:
注意,try 与 except 语句可以搭配使用,try 与 finally 语句也可以搭配使用,但是 except 与 finally 语句不能放在一起使用。
下面的示例是没有异常发生,fanally 语句内的程序代码还是被运行。try: a = 100 finally: print ('异常已经清除啦')输出结果如下:
try: raise ValueError finally: print ('异常已经清除啦')程序运行输出结果如下:
本文链接:http://task.lmcjl.com/news/16386.html