Notes on Python Basics --异常exception--Day 9

Day 9

Author: Denny YU
Created

异常的本质,调试核心理念

什么是异常exception:

在程序运行中遇到各种各样的问题

坏处:

  1. 逻辑代码和错误代码放在一起
  2. 程序员本身需要考虑的东西特别多

怎么解决异常?

try except 机制

1. 异常机制的本质

程序中运行遇到困难;

异常处理是指出现问题是也能正常地运行

Python中有描述和处理异常的类,被称为异常类

处理过程

  1. 抛出异常:
  2. 捕获异常:解释器获得该异常后,寻找相关的代码来处理该异常

对待异问题的态度

  1. 细看信息,定位错误,看清楚报的错误信息,并定位发生错误的地方
  2. 百度并查看相关的帖子
  3. 求助吧

2. 异常解决的关键:定位

3. try…一个except结构

语法结构

try:
	被监控可能发生引发异常的语句块
except BaseExeption [as e]:
	异常处理语句块

跳过try代码块中异常以后的代码,不发生异常则跳过except之后的代码块

3. try…多个except结构

语法结构

try:
	被监控的、可能引发异常的语句块
except Exception1:
	处理Exception1的语句
except Exception2:
	处理Exception2的语句

except BaseException:
	处理可能遗漏的异常语句块

5. try…except…finally结构

finally块无论是否发生异常都会执行,通常用来释放try中申请的资源

6. try…except…else结构

对于没有异常的情况可以使用else

7. 常见异常汇总

  1. SyntaxError: 语法错误
  2. NameError:尝试访问没有申明的变量
  3. ZeroDivisionError:除数为0的错误
  4. ValueError:数值错误
  5. TypeError:类型错误
  6. AttributeError:访问对象的不存在属性
  7. IndexError 索引越界异常
  8. KeyError 字典的关键字不存在

更多的异常:

8. Traceback模块的使用——异常写入日志文件

traceback模块中 traceback.print_exc(file=) 把异常写入文件中

9. With上下文管理

with实现更方便的实现释放资源的操作

with context_expr []:
	语句块
##example
with open("d:/bb.txt") as f:
	for line in f:
		print(line)

自定义异常类Raise抛出异常

class AgeError(Exception):
	def __init__(self,errorInfo):
		Exception.__init__(self)
		self.errorInfo=errorInfo
	def __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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值