栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python学习记录(十):异常和错误

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python学习记录(十):异常和错误

文章目录
  • 1. 异常机制本质
  • 2. 异常处理结构
    • 2.1 try… 一个 except 结构
    • 2.2 try… 多个 except 结构
    • 2.3 try…except…else 结构
    • 2.4 try…except…finally 结构
  • 3. with 上下文管理
  • 4. trackback 模块
  • 5. 自定义异常类

1. 异常机制本质
  • 异常指程序运行过程中出现的非正常现象;
  • 异常处理,就是指程序在出现问题时依然可以正确的执行剩余的程序,而不会因为异常而终止程序执行;
  • 异常类:用来描述和处理异常的类;
  • 异常处理过程:
    1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给解释器;
    2. 捕获异常:解释器得到该异常后,寻找相应的代码来处理该异常;

2. 异常处理结构 2.1 try… 一个 except 结构
try:
	被监控的可能引发异常的语句块
except BaseException [as e]:
	异常处理语句块
2.2 try… 多个 except 结构
  • 一般建议尽量捕获可能出现的多个异常(按照先子类后父类的顺序) ,并且针对性的写出异常处理代码;
try:
	被监控的、可能引发异常的语句块
except Exception1:
	处理 Exception1 的语句块
except Exception2:
	处理 Exception2 的语句块
...
except BaseException:
	处理可能遗漏的异常的语句块
2.3 try…except…else 结构
  • 如果 try 块中没有抛出异常,则执行 else 块;
  • 如果try 块中抛出异常,则执行 except 块,不执行 else 块;
try:
	a = input("请输入被除数:")
	b = input("请输入除数:")
	c = float(a)/float(b)
except BaseException as e:
	print(e)
else:
	print(" 除的结果是:",c)
2.4 try…except…finally 结构
  • finally块无论是否发生异常都会被执行;
  • 通常用来释放 try 块中申请的资源;
try:
	a = input("请输入一个被除数:")
	b = input("请输入一个除数:")
	c = float(a)/float(b)
except BaseException as e:
	print(e)
else:
	print(c)
finally:
	print(" 我是 y finally 中的语句,无论发生异常与否,都执行!")
	print(" 程序结束!")

3. with 上下文管理
  • with 上下文管理可以自动管理资源,在 with 代码块执行完毕后自动还原进入该代码之前的现场或上下文;
  • 不论何种原因跳出 with 块,不论是否有异常,总能保证资源正常释放;
with context_expr [ as var]:
	语句块

4. trackback 模块
import traceback
try:
	print( "step1")
	num = 1/0
except:
	traceback.print_exc()

5. 自定义异常类
  • 自定义异常类一般都是运行时异常,通常继承 Exception或其子类即可;
  • 命名一般以 Error、Exception 为后缀;
  • 自定义异常由 raise 语句主动抛出;
class AgeError(Exception): 
	def __init__(self,errorInfo):
		Exception.__init__(self)
		self.errorInfo = errorInfo
	def __str__(self):
		return str(self.errorInfo)+ ", 年龄错误!应该在 0 1-150 之间"


if __name__ == "__main__": 
age = int(input("输入一个年龄 :"))
if age<1 or age>150:
	raise AgeError(age)	
else:
	print("正常的年龄:",age)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998254.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号