赞
踩
- 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
- 一般情况下,在Python无法正常处理程序时就会发生一个异常。
- 异常是Python对象,表示一个错误。
- 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
案例演示:
- print(sd) #NameError
-
- stu={'name':'jack','age':18}
- print(stu['names']) #KeyError
-
- ss='ndjf'
- print(ss[9]) #IndexError
-
- aa='asdf'
- print(aa.index('j')) #ValueError
-
- if 5>'1':
- pass #TypeError
-
- f=open('word.txt') #FileNotFoundError
-
- print(5/0) #ZeroDivisionError
- 捕捉异常可以使用try/except语句。
- try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
- 如果你不想在异常发生时结束你的程序,只需在try里捕获它。
- try:
- <语句> #运行别的代码
- except <名字>:
- <语句> #如果在try部份引发了'name'异常
- else:
- <语句> #如果没有异常发生
代码:
- try:
- open("qwe.txt","r")
- print("123")
- except FileNotFoundError:
- print("异常处理")
- else:
- print("没有异常")
- try:
- open("qwe.txt","r")
- print("123")
- except FileNotFoundError as result:
- print("异常处理",result)
- else:
- print("没有异常")
格式:
- try:
- 正常的操作
- except:
- 发生异常,执行这块代码
- else:
- 如果没有异常执行这块代码
代码:
- try:
- open("test1.txt","r")
- except:
- print("异常处理")
- else:
- print("没有异常")
代码:
- try:
- f=open("test01.txt",encoding='utf-8')
- print(f.read())
- except (NameError,FileNotFoundError,TypeError) as rese:
- print("出现异常",rese)
- else:
- print("没有异常")
- try:
- fh = open("test.txt", "r")
- fh.readlines()
- fh.close()
- finally:
- print("有没有异常都会执行")
- try:
- open("test0001.txt")
- except:
- print("出现异常")
- else:
- print("没有异常")
- finally:
- print("有没有异常都会执行")
代码:
- def func1():
- print("---func1--1---")
- print(num)
- print("---func1--2---")
- def func2():
- print("--func2--1---")
- func1()
- print("--func2--2---")
- def func3():
- try:
- print("---func3--1---")
- func1()
- print("--func3--2----")
- except Exception as result: #Exception包含所有异常
- print(result)
- print("--func3---3---")
- func3()
- #func2()
返回值:
- ---func3--1---
- ---func1--1---
- name 'num' is not defined
- --func3---3---
使用raise语句自己触发异常
案例:输入考生的成绩(0~100)
- def ss(score):
- if score<0 or score>100:
- raise Exception('Invalid score',score)
- else:
- print('score:',score )
- ss(200)
通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接 或间接的方式
- class Error(Exception):
- # def __init__(self): #初始化方法(没有参数)
- # pass
- def __init__(self,len,atleast): #初始化方法(有参数)
- self.lenth=len
- self.minlenth=atleast
- def main():
- try:
- word=input('请输入密码:')
- if len(word)<6:
- # raise引发自定义的异常
- #raise Error() #实例化没有参数
- raise Error(len(word),6) #实例化方法
- except Exception as re: #re是一个对象
- # print('Error:输入密码长度过短!!!') #没有参数传递
- # print('Error:输入密码长度过短,密码长度至少为%d位' % (Error.minlenth), re) #类不能调用实例属性 AttributeError: type object 'Error' has no attribute 'minlenth'
- print('Error:输入密码长度过短,密码长度至少为%d位\n'%(re.minlenth),'re:',re)
- else:
- print('无异常')
- main()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。