首页 > 编程语言 >Python:异常处理

Python:异常处理

时间:2024-09-27 19:18:42浏览次数:3  
标签:IndexError Python 捕获 except 处理 print 异常 代码

文章目录

1. 异常介绍

1.1 什么是异常

Python中的异常指的是Python程序发生的不正常事件。
有时候,异常也可称为错误。
当检测到错误时,Python解释器就无法继续执行,此时会出现一些错误的提示,这就是异常,也就是我们常说的BUG。
在这里插入图片描述
实例:
(1)定义一个列表变量;

(2)获取一个远超列表索引值的元素,报错:IndexError。

# 异常
datas = [1,2,3]
print(datas[100])  # IndexError: list index out of range

1.2 制造常见的异常

(1)使用案例来制造出几个常见异常;

(2)比如:NameError、IndexError、KeyError、TypeError等。

# 1.NameError: 直接使用未定义的变量
print(a)
# 2.IndexError
strs = "hello"
print(strs[100])
# 3.KeyError
dicts = {}
print(dicts["name"])
# 4.TypeError
print("hello"+666)
strs = "hello"
print("结果:%d"%strs)
# 5.FileNotFoundError ..
open("./test.txt","r")

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 常见异常处理方式

2.1 快速入门异常

当程序中遇到了异常时,通常程序会出现崩溃情况。

为了不让程序崩溃,就可以使用异常来快速处理。

异常处理语法:

try:
    可能发生异常的代码
except:
    出现异常时, 执行的代码

实例:
(1)制造出一个IndexError异常;

(2)使用异常来快速处理这段可能会产生IndexError的代码。

# 1.制造异常
# 2.处理
try:
    datas = [1,2,3]
    print(datas[100])  # 中断
except:
    print("已经发生了异常。。。")
print("1111")   # 当处理了异常后,程序可以稳定继续往后执行代码

在这里插入图片描述

2.2 捕获多个异常

捕获异常是处理异常的标准形式。通常情况下,捕获异常分为三类:
(1)捕获一个指定的异常
(2)捕获多个异常
(3)捕获所有异常
接着,来看看捕获一个指定异常的语法:

try:
    可能发生异常的代码
except 异常类型名:
    当捕获到该异常类型时,执行的代码

捕获多个异常指的是:可以对一段可能发生异常的代码做多个异常类型的判断处理。

捕获多个异常语法:

try:
    可能发生异常的代码
except (异常类型1,类型2,...):
    如果捕获到该异常类型时,执行的代码

实例:
(1)有一段可能发生IndexError、KeyError的代码;

(2)使用多个except做异常处理;

(3)使用捕获多个异常的方式来处理代码片段。

# 1.可能发生异常
try:
    data = [1,2,3]
    print(data[100])
    # 2.捕获
except IndexError:
    print("发生异常。。。")
# 1.可能发生异常的代码
try:
    # dicts = {}
    # print(dicts["name"])

    data = [1,2,3]
    print(data[100])
    # 2.处理异常
# except IndexError:
except IndexError as error:
    print(f"可能会发生异常.=={error}")
except KeyError:
    print("可能会发生keyerror...")
print("11111111111111")
try:
    dicts = {}
    print(dicts["name"])

    data = [1,2,3]
    print(data[100])
    # 2.处理异常
# except IndexError:
except (IndexError,KeyError) as error:
    print(f"可能会发生异常.=={error}")

2.3 捕获所有异常

捕获所有异常语法:

try:
    可能发生异常的代码
except Exception[ as 变量]:
    当捕获到该异常类型时,执行的代码

实例:

(1)有一段可能发生IndexError、KeyError的代码;

(2)使用捕获所有异常的形式来处理。

# 1.可能会发生异常的代码
# 2.捕获所有异常
try:
    data = [1, 2, 3]
    print(data[100])
    dicts = {}
    print(dicts["name"])
except Exception as error:
    print(f"发生了异常信息...{error}")
print("hello world..")

总结
(1)在捕获异常的三种方式中,捕获所有异常的方式最简洁高效;

(2)在实际应用开发中,推荐使用捕获所有异常的方式来处理可能发生异常的代码。

2.4 异常的其他关键字

在捕获异常过程中,有两个关键字else、finally需要注意:

else:表示如果没有异常时,要执行的代码;
finally:表示的是无论是否有异常,都要执行的代码。

当把else、finally都放入到捕获异常中,语法:

try:
    可能发生异常的代码
except 异常类型:
    当捕获到该异常类型时,执行的代码
else:
	没有异常信息时,执行的代码
finally:
	无论如何,都会执行的代码

实例:
(1)有一段可能发生IndexError的代码片段;

(2)使用else关键字处理不发生异常的情况;

(3)使用finally关键字处理发生、不发生异常的情况;

(4)执行程序,观察效果。

# 1.制造异常
# 2.处理 指定异常
try:
    data = [1, 2, 3]
    print(data[100])
    # print(data[0])
except IndexError:
    print("====1====已发生异常信息!")
else: # 3.else:没有发生异常时,处理的事情
    print("没有发生异常时,才会执行代码!!")
finally:# 4.finally:文件必须关闭
    print("无论如何,都会执行finally!!")

总结
(1)关键字else、finally可以配合异常处理一起使用;

(2)注意:当使用finally部分代码时,可以用于完成一些必须完成的操作,例如关闭文件、关闭系统资源等。

2.5 异常具有传递性

当一个函数发生异常并没有捕获处理时,异常会被传递到调用该函数的地方。 如果调用函数的地方也没有捕获处理异常,那么 异常会继续向上层调用的地方传递,直到遇到能够处理异常的地方或者到达程序的最顶层(如main函数)。

标签:IndexError,Python,捕获,except,处理,print,异常,代码
From: https://blog.csdn.net/m0_70882914/article/details/142573232

相关文章

  • python基于flask的实验室设备管理系统的设计与实现 99xa5
    目录python语言框架介绍技术可行性具体实现截图技术栈系统的稳定性和可维护性核心代码部分展示详细视频演示系统测试源码获取方式python语言Python具有强大的优势,通过简洁的语法和类库进行操作。而且Python提供了许多的控制语句,比如if语句、for语句,while语句。在数......
  • 8,(经典面试题:分组求topN)Python数分之Pandas训练,力扣,1532. 最近的三笔订单
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,原题力扣链接二,题干三,建表语句四,分析五,Pandas解答六,验证七,知识点总结一,原题力扣链接.-力扣(LeetCode)二,题干表:Customers+---------------+---------+|ColumnName|Type|+------......
  • 26,【经典大厂面试题】【连续问题的困难题】Python数分之Pandas训练,力扣,2173. 最多连胜
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,原题力扣链接二,题干三,建表语句四,分析五,SQL解答六,验证七,知识点总结一,原题力扣链接.-力扣(LeetCode)二,题干表: Matches+-------------+------+|ColumnName|Type|+-------------+-----......
  • 自然语言处理实战项目:从理论到实现
    一、引言自然语言处理(NLP)是计算机科学、人工智能和语言学交叉的领域,旨在让计算机能够理解、处理和生成人类语言。随着互联网的飞速发展,大量的文本数据被产生,这为自然语言处理技术的发展提供了丰富的素材,同时也对其性能提出了更高的要求。在本文中,我们将详细阐述一个自然语......
  • springcloud的gateway处理跨域问题
    gateway处理跨域问题,有两种方式,一种是配置文件,另外一种是代码配置文件spring:cloud:gateway:globalcors:cors-configurations:'[/**]':allowCredentials:trueallowedMethods:"*"allowedHeaders:......
  • C语言 15 预处理
    C语言学习已经快要接近尾声了,但是有一个东西迟迟还没有介绍,就是一直在写的:#include<stdio.h>这到底是个什么东西,为什么每次都要加上呢?这里将详细讨论它缘由。C语言中带#号的指令并不是C关键字的一部分,不属于C语言。带#号的指令是写给编译器看的,告诉它一些事情,好让......
  • python贪吃蛇小游戏
    1.简介使用了turtle库来创建图形界面,你可以使用键盘的W、A、S、D键来控制蛇的移动方向。蛇吃到食物后,身体会增长,如果蛇撞到自己或者游戏边界,游戏就会结束。2.代码importturtleimporttimeimportrandomdelay=0.1#生成食物的位置food=turtle.Turtle()food......
  • 不用写一行Python代码,“Excel” 能直接爬虫了!
    家人们,要爬虫——现在用一个电子表格就行了。一行代码也别写,第三方软件也甭安。只需在表格里点几下就ok。不信,你瞧:就这么两下,网页上的商品信息都有了。网友看完都惊呆了,码个不停。一看到这是来自谷歌的产品(GoogleSheet,谷歌的“Excel”),大家就立马cue起了微软,问它慌......
  • Springboot大润发超市配送业务处理系统m5319(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,配送员,商品分类,商品信息,商品订单,配送订单,完成订单开题报告内容一、研究背景随着电子商务的快速发展,人们对于商品的需求越来越追求高效和便捷。超市作......
  • Flink(五)DataStream流处理算子
    DataStream流处理算子Source算子(数据读入)Flink可以使用StreamExecutionEnvironment.addSource(source)来为我们的程序添加数据来源基于本地集合的sourceDataStream<String>words=env.fromElements("hello","flink","stream");基于文件的sourcereadTextFile(path)......