异常分类

  • 语法错误和异常
  • 程序运行时候报出来的错误和异常: xxxError ….

    处理异常

    ```python

    情况1

    try: 可能出现异常的代码

except: 如果有异常时, 能够执行的代码

finally: 无论是否存在异常,都会被执行的代码

  1. ```python
  2. # 情况2
  3. try:
  4. 可能出现异常的代码
  5. except 异常的类型1:
  6. print('这里可以打印为什么出错')
  7. except 异常的类型2:
  8. print('这里可以打印为什么出错')
  9. except Exception as err: # 注意:如果有多个except,针对异常类型的顺序,应该把最大的Exception放在最后,因为它包含了大部分Error类型.
  10. print('出错了',err) # err可以返回出错的原因
  11. finally:
  12. 无论是否存在异常,都会被执行的代码
  1. # 情况3
  2. try:
  3. 有可能出现异常的代码
  4. except 异常类型1:
  5. ...
  6. else:
  7. 如果try中没有发生异常,则进入的代码 # 注意:如果使用else,则在try的代码中不能出现return语句.

示例说明

  • 没有办法控制客户的输入, 有可能是字母, 会报错, 将这部分代码放在try语句中;
  • 一旦try语句中的代码报错, 则会执行except中的代码,except中的代码可以理解为: 如果报错, 希望被执行的代码是什么…
  • 如果出现多种异常,那么可以使用多个except语句; ```python def func(): try:

    1. n1 = int(input('输入第一个数字:')) # 1, 如果输入2s, 报错ValueError
    2. n2 = int(input('输入第一个数字:'))
    3. # 加法运算
    4. per = input('输入运算符号(+,-,*,/):')
    5. if per == '+':
    6. sum = n1 + n2
    7. print('两个数相加,结果是:',sum)
    8. elif per == '-':
    9. sum = n1 - n2
    10. print('两个数相减,结果是:',sum)
    11. elif per == '*':
    12. sum = n1 * n2
    13. print('两个数相乘,结果是:',sum)
    14. elif per == '/':
    15. sum = n1 / n2 # 2, 如果n2输入为0, 报错 ZeroDivisionError
    16. print('两个数相除,结果是:',sum)
    17. else:
    18. print('符号输入错误!')

    except ValueError: # 3, 上面的输入一旦出错, 就执行这里的代码

    1. print('注意:必须输入数字!!!!')

    except ZeroDivisionError:

    1. print('注意:除数不能为零!!!!')

func()

  1. ```python
  2. def func():
  3. try:
  4. n1 = int(input('请输入一个数字:'))
  5. print(n1)
  6. # return 1
  7. except ValueError:
  8. print('输入的必须是数字...')
  9. return 2
  10. else: # 注意:如果使用else,则在try的代码中不能出现return语句. 否则else中的代码块不会被执行
  11. print('数字输入完毕!') # 没有发生异常的情况下才会执行的代码块
  12. func()
  1. # 文件操作 f = open(...) f.write() f.close()
  2. # 数据库操作 close()
  3. # 以上两种,不管操作有没有异常,最终都需要自动的释放资源出来
  4. def func():
  5. f = None
  6. try:
  7. f = open('file/openfile_read_bak.txt')
  8. x = f.read()
  9. print(x)
  10. return 1
  11. except Exception as err:
  12. print(err)
  13. return 2
  14. finally: # 只要有finally,return 1就不会完全终止函数的执行, finally下面的代码始终会执行
  15. print('---finally---')
  16. if f:
  17. f.close()
  18. return 3 # 这个return也会执行
  19. func()