鱼C论坛

 找回密码
 立即注册
查看: 1488|回复: 0

[技术交流] 第 33 讲 异常处理 你不可能总是对的2

[复制链接]
发表于 2018-3-29 11:24:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. 总结:
  2.   1. 异常处理语句由try:+待处理代码块,except exception[ as 变量]:+错误后处理语句,finally:+必须要执行的语句组成.
  3.   2. except 后面的exception 如果在try里没出现,python继续回像往常一样报错,try里的错误出现后,except 里有定义,则会报except里面的错.
  4.   3. exception是大写字母开头.
  5.   4. raise 语句会强行raise一个错误.
  6.   5. try语句里,只要检测到Error就会直接跳到except里面,所以不是所有的Error都能检测到.

  7. 测试题:
  8. 0.
  9. try,except,finally
  10. 1.
  11. 可以,一个程序可能会出现多个不同类型的错误.
  12. 2.
  13. try:
  14. 代码块
  15. except (ErrorType1,ErrorType2):
  16. 代码块
  17. 3.
  18. 因为并不知出现的是什么异常,起不到排查错误的作用.
  19. 4.
  20. 使用finally语句
  21. 5.
  22. 母鸡
  23. try:
  24.     for i in range(3):
  25.         for j in range(3):
  26.             if i == 2:
  27.                 raise KeyboardInterrupt
  28.             print(i, j)
  29. except KeyboardInterrupt:
  30.     print('退出啦!')


  31. 动动手:
  32. 0.
  33. import random

  34. secret = random.randint(1,10)
  35. print('------------------我爱鱼C工作室------------------')
  36. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
  37. try:
  38.     guess = int(temp)
  39. except ValueError:
  40.     guess = int(input('出错了,不能是整数以外的数值,重新猜吧!'))
  41. while guess != secret:
  42.     temp = input("哎呀,猜错了,请重新输入吧:")
  43.     guess = int(temp)
  44.     if guess == secret:
  45.         print("我草,你是小甲鱼心里的蛔虫吗?!")
  46.         print("哼,猜中了也没有奖励!")
  47.     else:
  48.         if guess > secret:
  49.             print("哥,大了大了~~~")
  50.         else:
  51.             print("嘿,小了,小了~~~")
  52. print("游戏结束,不玩啦^_^")

  53. 1.
  54. import random

  55. secret = random.randint(1,10)
  56. print('------------------我爱鱼C工作室------------------')
  57. try:
  58.     temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
  59.     guess = int(temp)
  60.     while guess != secret:
  61.         temp = input("哎呀,猜错了,请重新输入吧:")
  62.         guess = int(temp)
  63.         if guess == secret:
  64.             print("我草,你是小甲鱼心里的蛔虫吗?!")
  65.             print("哼,猜中了也没有奖励!")
  66.         else:
  67.             if guess > secret:
  68.                 print("哥,大了大了~~~")
  69.             else:
  70.                 print("嘿,小了,小了~~~")
  71.     print("游戏结束,不玩啦^_^")

  72. except ValueError:
  73.     guess = int(input('出错了,不能是整数以外的数值,重新猜吧!'))
  74. except EOFError as reason:
  75.     print('不能按ctrl + d 噢!,错误原因是:',reason)
  76. except KeyboardInterrupt as reason:
  77.     print('不能按ctrl + c噢!,错误原因是:',reason)

  78. 2.
  79. def int_input():
  80.     temp = 'a'
  81.     while not isinstance(temp,int):
  82.         try:
  83.             temp = int(input('请输入一个整数:'))
  84.         except ValueError:
  85.             print('出错,您输入的不是一个整数!')
  86. 3.
  87. try:
  88.     f = open('My_File.txt') # 当前文件夹中并不存在"My_File.txt"这个文件T_T
  89.     print(f.read())
  90.     f.close()
  91. except OSError as reason:
  92.     print('出错啦:' + str(reason))
  93. 把f.close()放在try里面.

  94. try:
  95.     f = open('My_File.txt') # 当前文件夹中并不存在"My_File.txt"这个文件T_T
  96.     print(f.read())
  97. except OSError as reason:
  98.     print('出错啦:' + str(reason))
  99. finally:
  100.     if 'f' in locals(): # 如果文件对象变量存在当前局部变量符号表的话,说明打开成功
  101.         f.close()
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 22:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表