Python处理异常代码的基本操作,原来都大同小异!

什么是异常?

简单来说,Python解释器是由上到下解析代码,如果代码中间有出现错误,那么下面的代码就不会被执行,终端会直接提示错误异常。所以我们需要去测试,然后进行处理操作,这个过程就是一场处理。

如何捕获异常?

1. 异常的写法

try:
	可能发生的错误代码
except (异常类型):
	异常后执行的代码

示例代码例一

try:
    f = open("wc.txt","r")
except:
    print("这个代码错误,不存在wc的文本")

2. 捕获指定异常

try:
    print(num)
    # print(1/0)
except NameError: # 指定异常类型
    print('错误')

注意

  1. 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
  2. 一般try下方只放一行尝试执行的代码。

3. 捕获多个异常

try:
    print(1/0)
except (NameError,ZeroDivisionError): # 指定多个异常类型
    print("有错误")

需要捕获多个异常的时候,使用元组方法书写异常类型,如上代码的操作就可以。

4. 捕获异常的描述

那么捕获异常的时候,如果我们有特定需要,想要了解异常类型的内容,我们可以这么做!

try:
    print(num)
except (NameError,ZeroDivisionError) as result: # 获取错误信息的描述结果
    print(result)   # 输出错误内容

5. 捕获所有异常

单独记忆各种异常类型实际很麻烦,不过python里有个定义了所有异常类型的父类Exception,可以直接拿来使用,避免了指定异常的麻烦。

try:
    print(num)
except Exception as result: # 捕获所有异常 并获取描述
    print(result)

6. 异常的else

那代码错误,有可执行的代码继续执行,那要是代码正确怎么处理?当然要让被检测的代码继续执行,这时候就要用else这关键字。

try:
    print(1)
except Exception as result:
    print(result)
else:
    print("我是else,这行代码没有异常") # 代码无错 执行这行代码

7. finally

表示无论发生神都需要执行的代码

try:
	f = open(''text.text,'r')
except Exception as result:
	print('没有异常')
finally:
	f.close()

8. 自定义异常模块

从标题可以理解,就是要对我们的异常做自己的定义,这里需要用到类来操作的。

class ShorInputError(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():
	# 2.排除异常:尝试执行,用户输入密码,如果长度小于3,抛出异常
	try:
		con = input('请输入密码:')
		if len(con) < 3 :
			raise ShorInputError(len(con),3)
	
	except Exception as result:
		print(result)
	else:
		print("密码输入完成")

main()

9. 异常传递思路

需求1:尝试只读打开text.text 文件若存在则读取内容,不存在则提示内容不存在
需求2:读取内容:循环读取,当无内容的时候退出循环,如果有用户意外中断,提示用户意外操作中断

import time
try:
    f = open('text.txt', 'r')
    try:
        while True:
            content = f.readline()
            if len(content) == 0: # 判断读取行的字符数长度是否为零
                break             # 为零中断操作
            time.sleep(2) # 休眠2秒时间 在执行下方语句
            print(content)
    except:
        # 如果在读取文件过程中,发生了异常操作,那么就会捕获到
        # 比如说,按下了ctrl+c 的快捷键
         print("操作异常,文件读取停止")
    finally:
        f.close()
        print('文件关闭')

except:
    print('不存在')

总结

总结就是没有总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不世人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值