Skip to content

Latest commit

 

History

History
198 lines (151 loc) · 4.45 KB

3050-188729-000305 尝试捕获异常.sy.md

File metadata and controls

198 lines (151 loc) · 4.45 KB
show version enable_checker
step
1.0
true

变量定义

回忆上次内容

  • 上次是变量相加
  • 整型数字变量可以相加
  • 字符串变量也可以相加
  • 但是
    • 字符串和整型数字
    • 整型数字和字符串
    • 不能相加
    • 怎么办?
  • 转格式
    • int("1")
    • str(2)
  • 可是是
    • int("abc")
  • 怎么办?😱

先试试看

  • 虽然我有了心理准备

图片描述

  • 但是python 显然还没有准备好

简化问题

图片描述

  • python3 的意思是 不知道怎么把 a 转化为十进制数
    • 不但python3没有办法转化
    • 我也没有思路
    • 毕竟不是0xa 这种形式
    • 还可能有 abc 这种形式
  • 但是,这种文字显然对于用户不够理想
    • 我们要写一些用户能够接受的文字

思路

#!/usr/bin/python3
a = input("How many apples do you have: ")
print("You have got " + a + " apples!")
b = input("How many banana do you have: ")
print("You have got " + b + " bananas!")
total = int(a) + int(b)
print("You have got " + str(total) + " fruits in all!")
  • 尝试工作出现在倒数第二行
  • 我们需要的是试着运行这一行
  • 如果不行就给用户一个明确的能理解的解释
  • 怎么让python3试着运行呢?

搜索try

  • 搜索一下python3+try

图片描述

try

图片描述

  • 试着就是try
  • 把需要尝试的代码部分放到try里面
#!/usr/bin/python3
a = input("How many apples do you have: ")
print("You have got " + a + " apples!")
b = input("How many banana do you have: ")
print("You have got " + b + " bananas!")
try:
    total = int(a) + int(b)
except:
    print("\033[41m[error]\033[0m -----Input numbers!!!")
print("You have got " + str(total) + " fruits in all!")
  • 注意
    • 冒号要紧跟着try、except
    • 冒号是英文半角的
    • 尝试的内容需要缩进4个字符
    • 不多不少 必须四个
  • 可以用gg=G自动调整缩进

尝试运行

图片描述

  • 失败了
  • 不过失败的错误提示是"total"变量没有被定义
  • 原来我想试着执行这句
  • 里面还声明了一个变量total
  • 最后一句想要输出这个total
  • 所以报错了
  • 怎么办?

再次修正

  • 都放try里面
#!/usr/bin/python3
a = input("How many apples do you have: ")
print("You have got " + a + " apples!")
b = input("How many banana do you have: ")
print("You have got " + b + " bananas!")
try:
    total = int(a) + int(b)
	print("You have got " + str(total) + " fruits in all!")
except:
    print("\033[41m[error]\033[0m -----Input numbers!!!")
  • 试试行不行

图片描述

  • 实验终于成功!!!
  • 红颜色的error好扎眼
  • 我们不要报错好不好

不报错?

#!/usr/bin/python3
a = input("How many apples do you have: ")
print("You have got " + a + " apples!")
b = input("How many banana do you have: ")
print("You have got " + b + " bananas!")
try:
    total = int(a) + int(b)
	print("You have got " + str(total) + " fruits in all!")
except:
    pass

图片描述

  • 这不行
  • 异常错误不处理不行
  • 要明确得处理
  • 要明确的报错
  • 知道哪里错了
  • 比假装没犯错要好得多

对应禅语

图片描述

  • 不要包容所有错误,除非你确定需要这样做
  • 精准地捕获异常,不写 except:pass 风格的代码
  • 那什么是except:pass风格的代码呢?

异常飘过

  • 就是那种知错不报错的方式
  • 虽然接收到了错误
  • 但是轻轻飘过

图片描述

  • 上面这是错的!
  • 这是最要命的
  • 让人没有解决的思路
  • 无法调试!
  • 程序员无语问苍天!

总结

  • 这次学习了
    • try
    • except
  • 注意要点
    • 半角冒号
    • 缩进
    • 输出错误信息
  • 有错就报告
    • 不要隐瞒
    • 否则找不到出错位置
  • 但是代码量好多啊
    • 10行了🤯
    • 可以把他输入部分和输出部分么?🤔
  • 我们下次再说!👋