首页 > 编程语言 >Python之异常

Python之异常

时间:2022-12-22 10:06:45浏览次数:49  
标签:Python 捕获 except try result print 异常

一、了解异常

当检测到⼀个错误时,解释器就⽆法继续执⾏了,反⽽出现了⼀些错误的提示,这就是所谓的"异常"。
例如:以 r ⽅式打开⼀个不存在的⽂件。
open('test.txt', 'r')

二、异常的写法

1、语法

try:
可能发⽣错误的代码
except:
如果出现异常执⾏的代码

2、快速体验

需求:尝试以 r 模式打开⽂件,如果⽂件不存在,则以 w ⽅式打开。
try:
f = open('test.txt', 'r')
except:
f = open('test.txt', 'w')

3、捕获指定异常

try:
可能发⽣错误的代码
except 异常类型:
如果捕获到该异常类型执⾏的代码

try:
print(num)
except NameError:
print('有错误')

注意:
1. 如果尝试执⾏的代码的异常类型和要捕获的异常类型不⼀致,则⽆法捕获异常。
2. ⼀般try下⽅只放⼀⾏尝试执⾏的代码。

4、捕获多个指定异常

当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使⽤元组的⽅式进⾏书写。
try:
print(1/0)
except (NameError, ZeroDivisionError):
print('有错误')

5、捕获异常描述信息

try:
print(num)
except (NameError, ZeroDivisionError) as result:
print(result)

6、捕获所有异常

Exception是所有程序异常类的⽗类。
try:
print(num)
except Exception as result:
print(result)

7、异常的else

else表示的是如果没有异常要执⾏的代码。
try:
print(1)
except Exception as result:
print(result)
else:
print('我是else,是没有异常的时候执⾏的代码')

8、异常的finally

finally表示的是⽆论是否异常都要执⾏的代码,例如关闭⽂件。
try:
f = open('test.txt', 'r')
except Exception as result:
f = open('test.txt', 'w')
else:
print('没有异常,真开⼼')
finally:
f.close()

三、异常的传递

体验异常传递
需求:
1. 尝试只读⽅式打开test.txt⽂件,如果⽂件存在则读取⽂件内容,⽂件不存在则提示⽤户即可。
2. 读取内容要求:尝试循环读取内容,读取过程中如果检测到⽤户意外终⽌程序,则 except 捕获异常并提示⽤户。

import time
try:
f = open('test.txt')
try:
while True:
content = f.readline()
if len(content) == 0:
break
time.sleep(2)
print(content)
except:
# 如果在读取⽂件的过程中,产⽣了异常,那么就会捕获到
# ⽐如 按下了 ctrl+c
print('意外终⽌了读取数据')
finally:
f.close()
print('关闭⽂件')
except:
print("没有这个⽂件")

四、⾃定义异常

在Python中,抛出⾃定义异常的语法为 raise 异常类对象 。
需求:密码⻓度不⾜,则报异常(⽤户输⼊密码,如果输⼊的⻓度不⾜3位,则报错,即抛出⾃定义异常,并捕获该异常)。

# ⾃定义异常类,继承Exception
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('密码已经输⼊完成')
main()

标签:Python,捕获,except,try,result,print,异常
From: https://blog.51cto.com/u_13236892/5962344

相关文章

  • Python之模块和包
    一、模块Python模块(Module),是⼀个Python⽂件,以.py结尾,包含了Python对象定义和Python语句。模块能定义函数,类和变量,模块⾥也能包含可执⾏的代码。1、导入模块1、导入......
  • python爬虫如何模拟正常用户的访问行为?
    在Python爬虫抓取数据时,我们很容易被目标网站限制访问,这是目标网站阻止别人批量获取自己网站信息的一种方式,通常会采用封IP作为终极手段,效果非常好。针对此类情况,作为Py......
  • 腾讯大佬告诉你,写Python到底用什么IDE合适
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Ceiling Division in Python
    ToperformceilingdivisioninPython,youcandefineyourownfunctionandutilizethefloordivisionoperator //.>>>defceiling_division(x,y):...ret......
  • Python 字符串
    目录Python字符串字符串基本特点字符串的编码引号创建字符串空字符串和len()函数转义字符字符串拼接不换行打印inputstr()实现数字转型字符串使用[]提取字符replace()实......
  • python第三方库的安装
    python安装第三方库的几种方法pip换源镜像源清华:https://pypi.tuna.tsinghua.edu.cn/simple豆瓣:http://pypi.douban.com/simple/阿里:http://mirrors.aliyun.com/pyp......
  • [oeasy]python0031_挂起进程_恢复进程_进程切换
    查看进程回忆上次内容上次修改了​​$PATH​​路径把当前用户shiyanlou的宿主文件夹​​~​添加到​​$PATH​​中这样​​sleep.py​​就可以被找到于是就可以被执......
  • 如何用python判断字符串包含多个字符串中的一个或多个?
    https://blog.csdn.net/weixin_42445362/article/details/109819677p="Tomisaboy,Lucyisagirl,TomlikemathandLucylikeenglish!"keywordslist=["englis......
  • [oeasy]python0031_挂起进程_恢复进程_进程切换
    ​ 查看进程回忆上次内容上次修改了$PATH路径把当前用户shiyanlou的宿主文件夹~添加到$PATH中这样sleep.py就可以被找到于是就可以被执行了还......
  • python-绘制对称条形图并添加数据标签
    坐标轴显示数据的百分比,小数形式;数据标签展示绝对值;添加参考线。app_use_df=pd.read_excel('/Users/wang/Desktop/data.xlsx'#,index_col=0......