第一章:python基础主要有6个板块,都是学习python的重中之重!!需要反复学习,多敲代码:
- 数据类型
- 语法(语句)
- 函数
- 异常
- 类
- IO操作
先看本次内容的目录:
一:异常
- try
- traceback.print_exc()
- raise
二:调试
正文:
这次我们来梳理下python中的异常。还有学习编程必知必会的调试。
先来说异常:
我们在写代码的过程中,难免会有一些bug。为了防止一些bug的出现导致软件崩溃或卡死,我们可以使用异常处理语句来使程序处理这种bug,继续执行下去。
有主流的3种方法:
一:try 语句
"""
异常进阶:
try
except BaseException as(可以通过BaseException类(万能异常类)输出错误的原因)
else
"""
try:
a = int(input('请输入一个数字'))
b = int(input('请输入第二个数字'))
result = a/b
except BaseException as e:
print('错误为', e)
else:
print('a/b=', result)
当被除数输入0,结果为:
请输入一个数字12
请输入第二个数字0
错误为 division by zero
当输入非整数时,结果为:
请输入一个数字12.4
错误为 invalid literal for int() with base 10: '12.4'
当正常输入整数,可以执行除法时:
请输入一个数字12
请输入第二个数字4
a/b= 3.0
二:traceback.print_exc()
这是traceback模块的函数,利用关键字传参(file=),可以把异常内容记录到文件里。方便问题定位。上面的代码稍微修改就可以:
import traceback
try:
a = int(input('请输入一个数字'))
b = int(input('请输入第二个数字'))
result = a/b
except Exception as e:
traceback.print_exc(file=open('err.log', 'a')) # 这里涉及到了随后要讲的IO操作,用追加的方式写日志到err.log里
else:
print('a/b=', result)
当故意给第二个数字0时:
请输入一个数字12
请输入第二个数字0
就会把错误信息记录到err.log这个文件里:
三: raise语句, 可以自定义错误类型。
下面例子中, 自定义了一个异常, 当发现年龄不在范围内,就会报错
score = int(input('请输入学生成绩:(0-100)'))
if score not in range(0, 101):
raise Exception("输入异常") # 手动抛出异常
else:
print(f"分数为{score}")
最后, 我们梳理必知必会的调试。
调试:英文叫debug。从字面意思看就是和bug对着干的。通过打断点,可以跟随程序的执行,以便于排查解决问题。
大体分三步走:
- 打断点
- 开始调试
- 最后三种快捷键(步过, 步入,步出)组合调试即可,不想调试也可以退出。
步过:不进入函数往下执行
步入:进入函数
步出:跳出函数
老规矩,上思维导图链接: