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

2023-05-16

目录

    • 什么是异常?
    • 如何捕获异常?
      • 1. 异常的写法
      • 2. 捕获指定异常
      • 3. 捕获多个异常
      • 4. 捕获异常的描述
      • 5. 捕获所有异常
      • 6. 异常的else
      • 7. finally
      • 8. 自定义异常模块
      • 9. 异常传递思路
    • 总结

什么是异常?

简单来说,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('不存在')

总结

总结就是没有总结

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 【CMake】CMake构建C++代码(一)

    x1f449 博 主 x1f448 xff1a 米码收割机 x1f449 技 能 x1f448 xff1a C 43 43 Python语言 x1f449 公众号 x1f448 xff1a 测试开发自动化 x1f449 专 注 x1f448
  • UrlEncode C源码

    urlencode是一个函数 xff0c 可将字符串以URL编码 xff0c 用于编码处理 URL编码 URL encoding xff0c 也称作百分号编码 Percent encoding xff0c 是特定上下文的统一资源定位符 UR
  • OSPF详解(5种包和状态机)

    1 OSPF的数据包 xff08 5种 xff09 Hello xff1a 发现建立并周期保护邻居关系 DBD xff1a 数据库描述包 进行主从关系的选举 xff0c 最重要的作用是发送LSDB目录 LSR xff1a 链路状态请求 对收
  • BGP—origin属性的应用

    BGP origin属性 1 origin 是公认必遵属性 公认必遵 xff1a 只要不人为修改 xff0c 该属性就不会自己改变 origin属性描述该路由是如何成为BGP路由的 符号作用i通过network生成的BGP路由 xff1f
  • MPLS-虚拟专用网 实验(分支之间可以互通)

    1 MPLS V P N实验 xff08 分支之间可以互通 xff09 实验要求 xff1a 1 A1和A2可以通过MPLS V P N打通 xff0c B1和B2可以打通 xff0c A不能访问B 2 R2为ISP 3 R6可以telne
  • vmware ESXi中安装windows11(解决VMware安装Windows11报错+win11跳过联网操作)

    文章目录 vmware ESxi 安装windows111 安装步骤2 Vmware安装win11报错解决方案2 1 问题产生原因 xff1a 2 2 解决方案 xff1a 3 Windows11安装过程中跳过联网操作 xff08 在无法连
  • python 修改ip地址

    安装包 pip install wmi pip install pywin32 实现 import wmi Obtain network adaptors configurations nic configs 61 wmi WMI Win3
  • Postman前置脚本-全局变量和环境变量

    全局变量和环境变量 61 61 全局变量和环境变量 61 61 Postman 请求前置脚本时间戳案例工作原理 全局变量和环境变量 全局变量 概念 xff1a 在 Postman 全局生效的变量 xff0c 全局唯一 设置 xff1a 代码
  • kubernetes❀集群环境搭建

    kubernetes 集群环境搭建 2 kubernetes集群环境搭建2 1 前置知识点2 2 kubeadm 部署方式介绍2 3 安装要求2 4 最终目标2 5 准备环境2 6 环境初始化2 6 1 检查操作系统的版本2 6 2 主机名
  • kubernetes❀资源管理

    kubernetes 资源管理 3 资源管理3 1 资源管理介绍3 2 YAML语言介绍3 3 资源管理方式3 3 1 命令式对象管理3 3 2 命令式对象配置3 3 3 声明式对象配置 3 资源管理 3 1 资源管理介绍 在kuberne
  • Kubernetes❀实战入门

    Kubernetes 实战入门 4 实战入门4 1 Namespace4 1 1 查看 4 1 2 创建 4 1 3 删除 4 1 4 配置方式 4 2 Pod4 2 1 创建并运行4 2 2 查看pod信息4 2 3 访问Pod4 2 4
  • Qt重定向问题

    概念 在我们使用软件时大多使用release版本 xff0c 这样在使用过程中的调试信息就不会显示出来 xff0c 为了将调试信息打印在界面上或者放在文件中保存起来我们就可以使用重定向的技术 在QT的帮助文档 xff1a qInstallM
  • VSUDP通信

    好久没弄VS的UDP通信了 xff0c 使用方式都忘记的差不多了 今天遇到了正好学习一下 UDP理论 xff1a UDP参考链接 xff1a socket函数 为了执行网络输入输出 xff0c 一个进程必须做的第一件事就是调用socket函
  • sockaddr_in结构体的说明(成员:sin_family、sin_addr、sin_zero)

    sockaddr in是系统封装的一个结构体 xff0c 具体包含了成员变量 xff1a sin family sin addr sin zero 这个结构体被封装在ws2def h中 xff0c 具体的代码如下 xff1a typedef
  • 字节、位与二进制表示

    前言 仅针对JAVA xff0c 总结几个知识点 字节与位 1字节 xff08 byte xff09 61 8位 xff08 bit xff09 每个bit位非0即1 xff0c 即二进制表达中的0或1 xff0c 0001中每个 0 和
  • windows配置tensorflow python object detection 环境

    option 1 pip install lt binary gt pip install upgrade https storage googleapis com tensorflow mac cpu tensorflow 1 12 0
  • 顺序表递增有序,插入元素x后仍递增有序

    思想 xff1a 1 xff09 先找到x元素的插入位置 xff08 顺序表从左到右依次比较 xff0c 若A元素大于x元素 xff0c 那么x元素插入的位置就是A元素所在的位置 xff09 2 xff09 将A元素所在的位置的元素以及它之
  • 猜数游戏,系统想一个数,我们来猜

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 输入多个数(输入-1为结束标志),计算这多个数的平均数

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 计算n的阶乘

    在 include span class token operator lt span stdio span class token punctuation span h span class token operator gt span

随机推荐