当前位置:   article > 正文

Python中的异常处理_python异常处理语句

python异常处理语句

1. 什么是异常?

  1. 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
  2. 一般情况下,在Python无法正常处理程序时就会发生一个异常。
  3. 异常是Python对象,表示一个错误。
  4. 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

案例演示:

  1. print(sd) #NameError
  2. stu={'name':'jack','age':18}
  3. print(stu['names']) #KeyError
  4. ss='ndjf'
  5. print(ss[9]) #IndexError
  6. aa='asdf'
  7. print(aa.index('j')) #ValueError
  8. if 5>'1':
  9. pass #TypeError
  10. f=open('word.txt') #FileNotFoundError
  11. print(5/0) #ZeroDivisionError

2. 异常处理

2.1 作用

  1. 捕捉异常可以使用try/except语句。
  2. try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
  3. 如果你不想在异常发生时结束你的程序,只需在try里捕获它。

2.2 语法格式

  1. try:
  2. <语句> #运行别的代码
  3. except <名字>:
  4. <语句> #如果在try部份引发了'name'异常
  5. else:
  6. <语句> #如果没有异常发生

代码:

  1. try:
  2. open("qwe.txt","r")
  3. print("123")
  4. except FileNotFoundError:
  5. print("异常处理")
  6. else:
  7. print("没有异常")
  1. try:
  2. open("qwe.txt","r")
  3. print("123")
  4. except FileNotFoundError as result:
  5. print("异常处理",result)
  6. else:
  7. print("没有异常")

2.3 捕获所有异常

格式:

  1. try:
  2. 正常的操作
  3. except:
  4. 发生异常,执行这块代码
  5. else:
  6. 如果没有异常执行这块代码

代码:

  1. try:
  2. open("test1.txt","r")
  3. except:
  4. print("异常处理")
  5. else:
  6. print("没有异常")

2.4 捕获多种异常

代码:

  1. try:
  2. f=open("test01.txt",encoding='utf-8')
  3. print(f.read())
  4. except (NameError,FileNotFoundError,TypeError) as rese:
  5. print("出现异常",rese)
  6. else:
  7. print("没有异常")

2.5 try-finally语句

  1. try:
  2. fh = open("test.txt", "r")
  3. fh.readlines()
  4. fh.close()
  5. finally:
  6. print("有没有异常都会执行")
  1. try:
  2. open("test0001.txt")
  3. except:
  4. print("出现异常")
  5. else:
  6. print("没有异常")
  7. finally:
  8. print("有没有异常都会执行")

2.6 异常的传递

代码:

  1. def func1():
  2. print("---func1--1---")
  3. print(num)
  4. print("---func1--2---")
  5. def func2():
  6. print("--func2--1---")
  7. func1()
  8. print("--func2--2---")
  9. def func3():
  10. try:
  11. print("---func3--1---")
  12. func1()
  13. print("--func3--2----")
  14. except Exception as result: #Exception包含所有异常
  15. print(result)
  16. print("--func3---3---")
  17. func3()
  18. #func2()

返回值:

  1. ---func3--1---
  2. ---func1--1---
  3. name 'num' is not defined
  4. --func3---3---

2.7 触发异常

使用raise语句自己触发异常

案例:输入考生的成绩(0~100)

  1. def ss(score):
  2. if score<0 or score>100:
  3. raise Exception('Invalid score',score)
  4. else:
  5. print('score:',score )
  6. ss(200)

 2.8 用户自定义异常

通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接 或间接的方式

  1. class Error(Exception):
  2. # def __init__(self): #初始化方法(没有参数)
  3. # pass
  4. def __init__(self,len,atleast): #初始化方法(有参数)
  5. self.lenth=len
  6. self.minlenth=atleast
  7. def main():
  8. try:
  9. word=input('请输入密码:')
  10. if len(word)<6:
  11. # raise引发自定义的异常
  12. #raise Error() #实例化没有参数
  13. raise Error(len(word),6) #实例化方法
  14. except Exception as re: #re是一个对象
  15. # print('Error:输入密码长度过短!!!') #没有参数传递
  16. # print('Error:输入密码长度过短,密码长度至少为%d位' % (Error.minlenth), re) #类不能调用实例属性 AttributeError: type object 'Error' has no attribute 'minlenth'
  17. print('Error:输入密码长度过短,密码长度至少为%d位\n'%(re.minlenth),'re:',re)
  18. else:
  19. print('无异常')
  20. main()

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号