Python-异常

一、写法

python 复制代码
try:
	可能发生错误的代码
except:
	如果出现异常执行的代码
python 复制代码
try:
	f=open('test.txt','r')
except:
	f=open('test.txt','w')

二、捕获指定异常

python 复制代码
try:
	可能发生错误的代码
except:
	如果捕获到该异常类型执行的代码
python 复制代码
try:
	print(num)
except NameError:
	print('有错误')

1.如果尝试执行的代码异常类型与要捕获的异常类型不一致,则无法捕获异常

2.一般try下方只放一行尝试执行的代码

python 复制代码
try:
	print(1/10)
except(NameError,zeroDivisionError):
	print('有错误')

当捕获多个异常时,可以把要捕获的异常类型名字 放到except后,并使用元组 的方式进行书写

(1)捕获异常描述信息

python 复制代码
try:
	print(num)
except(NameError,zeroDivisionError) as result:
	print(result)

(2)捕获所有的异常
Exception:所有程序异常类的父类

python 复制代码
try:
	print(num)
except Exception as result:
	print(result)

三、异常的小部分

1.异常的else

else表示为如果没有异常要执行的代码

python 复制代码
try:
	print(1)
except Exception as result:
	print(result)
else:
	print('我是else,我是没有异常时要执行的代码')

2.异常的finally

finally表示为无论是否异常均要执行的代码

python 复制代码
try:
	f=open('test.txt','r')
except Exception as result:
	f=open('test.txt','w')
else:
	print('无异常')
finally:
	f.close()

四、异常的传递

python 复制代码
import time
try:
	f=open('test.txt')
	try:
		while True:
			content=f.readline()
			if len(content)==0:
				break
			time.sleep(2)
			print(content)
	except:
		print('意外终止了读取数据')
	finally:
		f.close()
		print('关闭文件')
except:
	print('没有这个文件')

五、自定义异常

python 复制代码
#模拟输密码系统,密码不足3位/错误报异常
class ShortInputError(Exception):
	def _init_(self,length,min_len):
		self.length=length
		self.min_len=min_len
	def _str_(self):
		return f'请输入你要输入的长度为{self.length},不可以少于{self.min_len}个字符'
def main():
	try:
		con=input('请输入密码:')
		if len(con)<3:
			raise ShortInputError(len(con),3)
		except Exception as result:
			print(result)
		else:
			print('密码输入完成')
相关推荐
用户83562907805111 分钟前
Python 操作 PDF 附件:添加、查看与管理指南
后端·python
宇宙之一粟8 小时前
乐企版式文件生成平台
java·后端·python
学测绘的小杨1 天前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3101 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐1 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱2 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot2 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海2 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱2 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽2 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict