当前位置: 代码迷 >> 综合 >> Day9:异常处理、try...except结构
  详细解决方案

Day9:异常处理、try...except结构

热度:27   发布时间:2024-02-01 03:59:51.0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
课上代码

  • traceback
# traceback模块的使用
import tracebacktry:print('step1')a = 3 / 0
except:traceback.print_exc()# 将异常信息输出到指定的文件中
try:print('step1')b = 3 + 'a'a = 3 / 0
except:with open(r'D:\WinterIsComing\python\New_Wave\Python_basic\Day9\异常信息记录.txt', encoding='utf-8', mode='a') as f:traceback.print_exc(file=f)
  • try_except基本结构
# try...单个except结构try:print('step1')a = 3 / 0print('step2')except BaseException as e:print('step3:', e)print('step4')while True:try:x = int(input('请输入一个数字'))print('输入的数字:', x)if x == 88:print('退出程序')breakexcept BaseException as e:print(e)print('异常,请重新输入数字')print('循环数字输入程序结束!')# try...多个except结构
try:a = input('请输入一个被除数:')b = input('请输入一个除数:')c = float(a) / float(b)print(c)except ZeroDivisionError:print('异常,除数不能为0')
except ValueError:print('异常,请输入数字类型的数据')
except NameError:print('异常,变量不存在')
except BaseException as e:print(e)# try...except..else结构
try:a = input('请输入一个被除数:')b = input('请输入一个除数:')c = float(a) / float(b)print(c)except BaseException as e:print(e)else:print('执行的结果是:', c)# try...except..finally结构
try:a = input('请输入一个被除数:')b = input('请输入一个除数:')c = float(a) / float(b)except BaseException as e:print(e)
else:print(c)
finally:print('我是finally中的语句,无论是否发生异常,都执行')
print('程序执行结束')try:f = open(r'D:\WinterIsComing\python\New_Wave\Python_basic\Day9\try_finally结构.txt', encoding='utf-8',mode='r')content = f.readline()except BaseException as e:print(e)else:print(content)finally:print('早晚都得finally')try:f.close()except BaseException as e:print(e)
print('程序执行结束')
  • with上下文管理
with open(r'D:\WinterIsComing\python\New_Wave\Python_basic\Day9\try_finally结构.txt',encoding='utf-8',mode='r') as f:print(f.readline())
  • 自定义异常
class AgeError(Exception):  # 继承Exceptiondef __init__(self, errorInfro):Exception.__init__(self)self.errorInfo = errorInfrodef __str__(self):return str(self.errorInfo) + ',年龄错误!应该在1-150之间'if __name__ == '__main__':age = int(input('输入一个年龄:'))if age < 1 or age > 150:raise AgeError(age)else:print('正常的年龄:', age)