python对异常的处理

news2024/11/28 22:31:05
了解异常
    当检测到一个错误时,解释器就无法继续执行了,反而出现一些错误的提示,这就是异常。
测试:
f = open('test.txt','r') #以读模式打开文件,文件不存在则报错

运行了解释器报错
避免出现异常提示的写法
#需求:尝试打开test.txt(r),如果文件不存在,只写方式打开 w
try:
    可能发生错误的代码
except:
    如果出现异常执行的代码
try:
    f = open('test.txt','r')
except:
    f = open('tst.txt','w')
异常提示就没有了
捕获指定异常
语法
try:
    可能发生错误的代码
except:
    如果捕获到该类型异常执行的代码
体验   #尝试打印未定义的num
try:
   print(num)    #未定义num
except NameError:
    print('有错误') #当捕获到异常后执行的代码
捕获到的异常类型   执行了异常后 执行 的代码  
注意:
    1.如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
    2.一般try下方只放一行尝试执行的代码。
捕获多个指定异常
    当捕获多个异常时,可以把要捕获的异常的类型的名字,放到except后,并使用元组的方式进行书写。
try:
   print(1/0)
except (NameError,ZeroDivisionError):
    print('有错误')
捕获异常描述信息  加上 as 别名
try:
   print(1/0)
except (NameError,ZeroDivisionError) as result:
    print(result)  #print(result)
使用Exception捕获所有异常
    Exception是所有程序异常类的父类。
try:
   print(num)
except Exception as result:
    print(result) #name 'num' is not defined
异常的else
    else表示的是如果没有要执行的代码
try:
   print(1/0)
except Exception as result:
    print(result)  #print(result)
else:
    print('我是else,是没有异常的时候执行的代码')
异常的finaly
    finally表示的是无论是否异常都要执行的代码,通常放在关闭文件。
#需求:尝试打开test.txt(r),如果有异常,最终关闭文件
try:
    f = open('test100.txt','r')
except Exception as e:
    f = open('test100.txt', 'w')
finally:
    f.close()
异常传递
体验异常传递
需求:
1、传递只读方式打开test.txt文件,如果文件存在则读取文件内容,文件不存在则提示用户即可
2.、读取内容要求:尝试循环读取内容,读取过程中如果检测到用户意外终止程序,则except捕获异常并提示用户
import time

try:
    f = open('test.txt')
    #尝试循环读取内容
    try:
        while True:
            con = f.readline()
            #如果读取完成退出循环
            if len(con) == 0:
                break
            time.sleep(3)
            print(con)
    except:
        #在命令提示符中如果按下Ctrl+c结束
        print("程序被意外终止")
except:
    print('该文件不存在')
自定义异常
    在python中,抛出自定义异常的语法为raise异常类对象。
需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足3位,则报错,即抛出自定义异常,并捕获该异常)。
#1.自定义异常类,  继承Exception,魔法方法有init和str(设置异常描述信息)
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():
    #2. 抛出异常:尝试执行:用户输入密码,如果长度小于3,抛出异常
    try:
        password = input('请输入密码:')
        if len(password) < 3:
            #抛出异常类创建的对象
            raise  ShortInputError(len(password),3)
    # 3. 捕捉该异常
    except Exception as result:
        print(result)
    else:
        print("没有异常,密码输入完成")

main()


异常总结
异常语法:
try:
    可能发生异常的代码
except:
    如果出现异常执行的代码
else:
    没有异常执行的代码
finally:
    无论是否异常都要执行的代码
捕获异常语法
except 异常类型:
    代码

except 异常类型 as xx:
    代码

自定义异常语法
#1.自定义异常类
class 异常类名(Exception):
    代码

    #设置抛出异常描述信息
    def __str__(self):
        return ...

#2. 抛出异常
raise  异常类名()

# 3. 捕捉该异常
    except Exception...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

串口通信及串口转蓝牙相关知识

之前没有接触过硬件相关的工作&#xff0c; 因此对硬件的知识一知半解。 最近由于项目需要&#xff0c; 用到了串口通信以及串口跟蓝牙之间通信相关的东西。记录下来&#xff0c; 希望对新手有所帮助。 如有疏漏之处&#xff0c; 欢迎指正。 1 串口通信 https://www.jishulin…

docker-compose安装部署gitlab中文版

文章目录前言一、环境信息二、准备部署1.准备路径2.安装docker-compse&#xff0c;下载镜像3.引入库2.执行部署三、登陆页面前言 记录一下使用docker-compose部署gitlab平台的过程 一、环境信息 操作系统版本&#xff1a;CentOS Linux release 7.9.2009 (Core) gitlab镜像版本…

世界杯winner只属于你——MESSI

其实现在大脑中还在回忆着那一脚精彩的进球。 看官方怎么说的&#xff1a; 北京时间11月27日凌晨3点&#xff0c;世界杯C组第2轮&#xff0c;阿根廷2-0战胜墨西哥。 梅西在11月27日用1进球1助攻&#xff0c;上帝降临&#xff0c;拯救阿根廷。特别是那个进球&#xff0c;直接让…

矩阵快速幂 笔记加理解

文章目录1.何为快速幂1.1学习快速幂的好文章1.2快速幂取模代码&#xff08;对1000取模&#xff09;2.矩阵快速幂1.何为快速幂 补充一个公式证明&#xff1a; 1.1学习快速幂的好文章 http://t.csdn.cn/agKop 1.2快速幂取模代码&#xff08;对1000取模&#xff09; ll fast…

VMware虚拟网络编辑器配置

一&#xff0c;NAT模式网络设置。 把下面的ip&#xff0c;子网掩码&#xff0c;网关记住。 切换到network-scripts 目录下。 cd /etc/sysconfig/network-scripts/修改ifcfg-ens33 这个文件。 然后重启网络服务&#xff1a; 对于openEuler&#xff1a; systemctl restart Ne…

关于Eslint语法检查

在vue创建项目中&#xff0c;选择eslintStandard config -标准规范- 在保存时就开启检查 eslintrc.js配置&#xff0c;没反应重启项目 语法报错&#xff0c;根据错误提示&#xff0c;去eslint官网搜索规则 在eslintrc.js文件中rules中添加或者修改规则&#xff0c;自定义的…

猿如意|IntelliJ IDEA Community下载安装以及基础开发设置和快捷键设置的详细教程

文章目录 一、如何在猿如意官网中下载IntelliJ IDEA Community&#xff1f; 二、关于IntelliJ IDEA Community的安装以及使用前的设置教程 1.下载安装 2.基础开发设置 三、总结 一、如何在猿如意官网中下载IntelliJ IDEA Community&#xff1f; 我们要想能够更简单的获取到Int…

【愚公系列】华为云系列之DevCloud+ECS+MySQL搭建超级冷笑话网站【开发者专属集市】

文章目录前言1.项目背景2.项目介绍3.所需华为云环境一、华为云系列之DevCloudECSMySQL搭建超级冷笑话网站1.创建项目2.创建代码仓库3.创建数据库4.修改代码5.编译构建6.部署7.环境准备8.导入主机9.部署应用10.应用访问11.资源释放11.1 释放 ECS 资源11.2 释放 RDS 资源总结前言…

[附源码]Python计算机毕业设计Django的校园报修平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

大于10M图片如何查看?

大于10M的图片&#xff0c;如果Windows无法查看&#xff0c;只需要压缩到10M以内就行。 我们先下载一个工具&#xff0c;帮助我们批量压缩图片。 Faststone image viewer 查看器&#xff0c;下载地址&#xff1a; https://www.faststone.org/ 假如我们有一张大于10M的图片&a…

计算机病毒

文章目录计算机病毒计算机病毒的类型计算机感染病毒的表现计算机病毒 计算机病毒指的是干扰计算机正常运行的软件或者代码片段。 计算机病毒的传播途径有很多&#xff0c;例如隐藏在传输的文件或者数据中&#xff0c;或者借助一些不安全的网络等等。病毒一旦进入您的计算机系…

【NDVI:注意力机制:遥感图像】

NDVI-Net: A fusion network for generating high-resolution normalized difference vegetation index in remote sensing &#xff08;NDVI-Net&#xff1a;一种生成高分辨率归一化植被指数的遥感融合网络&#xff09; 归一化植被指数&#xff08;Normalized Difference Ve…

Matlab最小二乘平面拟合(SVD方法)—点云处理及可视化第3期

在之前的文章中&#xff0c;分享了Matlab基于PCA的平面拟合方法&#xff1a; 这一次&#xff0c;再来分享一下基于奇异值分解&#xff08;Singular Value Decomposition, SVD&#xff09;的平面拟合。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;《Matlab点云处理及…

融合多策略的萤火虫算法求解多目标优化问题(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

数字化门店| 美甲美睫店管理系统| 小程序教程

随着悦己消费升级&#xff0c;女性对于自身外观上的消费支出增加&#xff0c;近几年疫情之下&#xff0c;人们出门常戴口罩&#xff0c;对于爱美的女孩&#xff0c;打扮的漂漂亮亮却被口罩遮挡了容颜&#xff0c;都说眼睛与手可以看出一个人的心灵与美&#xff0c;因此美甲美睫…

new Promise(function(resolve, reject){}) 的reject相当于抛异常

通过reject传异常&#xff1a; <html><body><script>const promise new Promise(function(resolve, reject) {if (Math.random() > 0.5){resolve("value");} else {reject(new Error("throw error"));//throw new Error("thro…

分层架构理论基础

一、三层架构 1、什么是三层架构 三层架构&#xff08;3-tier architecture&#xff09;通常意义上的三层架构就是将整个业务应用划分为&#xff1a;表示层&#xff08;User Interface layer&#xff09;、业务逻辑层&#xff08;Business Logic Layer&#xff09;、数据访问层…

容器运行时与k8s概述

容器运行时与k8s概述 首先我们要明确一个知识点就是容器本质上就是一个进程&#xff0c;一个特殊的进程&#xff0c;是通过 Namespace 实现资源&#xff08;网络、文件系统等&#xff09;隔离&#xff0c;通过 Cgroups 实现资源&#xff08;CPU、内存&#xff09;限制&#xff…

Kernel怎么跳转到Android:linux与安卓的交界

上一篇写了Uboot怎么到Linux kernel&#xff0c;这一章来看看linux kernel怎么到Android的。 虽然是零零碎碎的学习了一些关于Linux的知识&#xff0c;但是对于这个部分基本上没有站在系统的角度去看过。 1、前言 kernel的启动主要分为两个阶段。 1、阶段一 从入口跳转到s…

Python | 24K纯新手的Python环境搭建之路!~(Anaconda + Jupyter)

1写在前面 最近在搞Machine Learning&#xff0c;R中的包实在是不太给力&#xff0c;这方面还是要看Python的。&#x1f602; 这里和大家分享一下我的Python环境搭建之路&#xff0c;图文介绍非常详细&#xff0c;希望帮助到大家。&#x1f618; 由于我的电脑是M1 芯片的Macboo…