异常的使用场景 | 学习笔记

简介: 快速学习 异常的使用场景

开发者学堂课程【Python入门 2020年版异常的使用场景】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10409


异常的使用场景


内容介绍:

一、except 语句处理异常

二、异常的使用场景


一、except 语句处理异常

try. ..except 语句处理程序运行过程中的异常,异常出现如下:

file = open(‘ddd.txt')

#打开一个文件用来后面读取这个文件,实际上不存在文件“ddd.txt”。

print(file.read())

file.close()

#打开一个文件用来读文件,运行结果会提示异常,此时就不会继续往下读。运行会提示在第一行就已经出错。

如果程序不在第一行出错的地方崩了,它接着往下走了,读东西的文件都不存在读不出数据的。

报错的目的就是已经出现问题,系统会崩了,避免再出更多的问题,必须要解决问题,否则后边的代码没办法运行。这就是异常机制,必须要解决问题,否则程序无法继续运行,避免程序的一错再错。

1.解决方法一:

try:

file = open( " ddd.txt")

print(file.read())

file.close()

except Exception as e:

#给异常起了一个变量名 e

print(e)

#运行这段代码,控制台会打印错误提示:

[ Errno 2] No such file or directory: 'ddd.txt’。其中 Exception 是一个父类。

2.解决方法二:

try:

file = open( " ddd.txt")

print(file.read())

file.close()

except:

print('出错了!!!')

#也可以不写 except Exception as e,直接 except,控制台会直接打印出错了!!!

3.解决方法三:

try:

print(1 / 2)

file = open( ' ddd.txt ')

print(file.read())

file.close()

except (FileNotFoundError) as e:

#表示处理指定类型的异常

print(e)

#运行这段代码,控制台会打印错误提示:[ Errno 2] No such file or directory: 'ddd.txt’

如果将第二行代码改为1/0,系统会直接崩掉,不会向下运行。1/0是除此之外的另一种错误,但是由于此处处理的是指定类型的异常,所以程序捕捉不到1/0类型的错误

可以将1/0类型的错误捕捉加进去:except (FileNotFoundErrorZeroDivisionError) as e,程序就会继续运行。

try:

person ={' name ' : 'zhangsan'}

print(person['age'])

print(1 / 2)

file = open( ' ddd.txt ')

print(file.read())

file.close()

except (FileNotFoundError) as e:

print(e)

#运行程序后,程序会崩掉。如果用中括号捕捉数据内容,而这个内容不存在,则程序会出现问题。因为程序捕捉不到keyerror 类型的错误。

可以将该类型的错误捕捉加进去:except (FileNotFoundErrorZeroDivisionError,KeyError) as e,程序就会继续运行。

处理多个语句错误时可以不用这么麻烦,直接使用父类 Exception

其中 FileNotFoundError 继承 OSErrorOSError 继承 WindowsError, WindowsError 继承自 Exception

ZeroDivisionError 继承 ArithmeticError(算法的错误),ArithmeticError 也继承 ExceptionKeyError 继承自LookupErrorLookupError 继承自 Exception

无论那个错误都继承自 Exception,所以可以直接用父类 Exception 代替处理指定类型的异常。


二、异常的使用场景

age = input('请输入您的年龄: ')

#input 接收到的用户输入是一个字符串

if int(age) > 18:

print( '欢迎来到我的网站’)

#这串代码会存在一个问题,不能控制输入的类型,如果输入的为数字之外的数据,如“kjhf”程序就会报错,控制台提示 ValueError: invalid literal for int() with base 10: ‘kjhk '

解决方法:

1.初次修改

age = input("请输入您的年龄:")

if age.isdigit():

#判断输入的年龄是否是数字

age = int(age)

if age > 18:

print( '欢迎来到我的网站")

else:

print(未满18,请自动离开')

else:

print('输入的不是数字)

#运行程序后就只能输入数字,但是当年龄不是整数的时候,也会判断该输入不是数字。

2.再次修改

age = input("请输入您的年龄:")

try:

age = float(age)

except valueError as e:

print( '输入的不是数字')

#先把输入的年龄数字转换为小数,判断是否是数字。

else:

if age > 18:

print( '欢迎来到我的网站")

else:

print('未满18,请自动离开')

#当你很多时候判断不了语句的正确性时,就可以使用判断语句。除 except 外下周会讲正则表达式\d+(.?\d+)? \d(数字)+(出现一次或多次) .?( 出现0次或一次)。

没有正则表达式的话,你来判断这个字符串它输入的内容是否是一个合法的数字,你其实是没有办法判断的。

相关文章
|
弹性计算
阿里云账号注册流程图文详解、账户实名认证和申请免费服务器全流程
阿里云账号注册支持手机号、支付宝等验证方式。使用手机号需手动验证,而支付宝等可自动完成实名认证。注册后须进行个人或企业实名认证才能正常使用服务。个人认证推荐使用支付宝快速完成;企业认证也支持支付宝法人扫描完成。完成认证后,可在免费中心申请最长达3个月的免费服务器试用,或选择付费方案获得更多资源。
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1102 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1776 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
708 152
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
664 14
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
467 5