python中有哪些异常,怎么处理

news2024/11/16 11:48:38

目录

python报的错误怎么处理

1. 使用 try-except 语句块

2. 使用 finally 语句块

3. 主动引发异常

python中有哪些异常

不知道是什么异常时怎么操作

总结


python报的错误怎么处理

在Python中,当程序执行时遇到错误,Python会抛出异常。要处理Python报的错误,可以使用以下方法:

 

1. 使用 try-except 语句块

使用 try-except 语句块可以捕获异常并进行相应的处理。在 try 代码块中编写可能引发异常的代码,然后在 except 代码块中指定异常类型并处理异常。

 

  try:
       # 可能会出现错误的代码
       result = 10 / 0
       print(result)
   except ZeroDivisionError:
       # 处理 ZeroDivisionError 异常
       print("除数不能为零")
   except Exception as e:
       # 处理其他异常类型
       print("发生了一个错误:", str(e))

   在上述示例中,`try` 代码块中的 `10 / 0` 会引发 `ZeroDivisionError` 异常。因此,相应的 `except ZeroDivisionError` 代码块会被执行,并输出 "除数不能为零"。

2. 使用 finally 语句块

可以使用 `finally` 关键字指定一个代码块,无论异常是否被捕获都会执行其中的代码。

 try:
       # 可能会出现错误的代码
       result = 10 / 0
       print(result)
   except ZeroDivisionError:
       # 处理 ZeroDivisionError 异常
       print("除数不能为零")
   finally:
       # 无论是否捕获到异常,都执行这段代码
       print("程序执行完毕")

   在上述示例中,无论是否捕获到异常,`finally` 代码块中的代码都会被执行,输出 "程序执行完毕"。这在一些需要确保资源释放或善后处理的情况下很有用。

3. 主动引发异常

可以使用 `raise` 语句来主动引发一个异常。

 

def divide_numbers(a, b):
       if b == 0:
           raise ValueError('除数不能为零')
       return a / b
   
   try:
       result = divide_numbers(10, 0)
       print(result)
   except ValueError as e:
       print("发生错误:", str(e))

   在上述示例中,函数 `divide_numbers()` 检查除数是否为零,如果是,则使用 `raise` 语句引发 `ValueError` 异常。然后,在 `try-except` 代码块中捕获该异常并进行相应的处理。

处理Python报的错误时,可以使用这些方法来捕获异常并相应地处理它们。这样可以提高程序的健壮性,防止程序在出现错误时崩溃,并根据需要执行适当的操作。

python中有哪些异常

在Python中,有许多内置的异常类,用于表示不同类型的错误或异常情况。以下是一些常见的Python异常:

 

1. `BaseException`:所有异常的基类,所有内置异常类都是它的子类。

2. `Exception`:常规的异常类,大多数异常都是它的子类。

3. `SyntaxError`:语法错误,通常是由于程序的语法不正确而引发的异常。

4. `IndentationError`:缩进错误,当代码的缩进不正确时引发的异常。

5. `NameError`:名称错误,当尝试访问未定义的变量或函数时引发的异常。

6. `TypeError`:类型错误,当操作或函数应用于错误类型的对象时引发的异常。

7. `ValueError`:值错误,当传递给函数的参数具有不合适的值时引发的异常。

8. `IndexError`:索引错误,当尝试访问列表、元组或其他序列的不存在的索引时引发的异常。

9. `KeyError`:键错误,当尝试访问字典中不存在的键时引发的异常。

10. `FileNotFoundError`:文件未找到错误,当尝试打开不存在的文件时引发的异常。

11. `IOError`:输入/输出错误,通常与文件或流操作相关的异常。

12. `ZeroDivisionError`:零除错误,当尝试将一个数除以零时引发的异常。

这只是一小部分常见的Python异常。除了内置的异常类,还可以自定义异常类来表示特定的错误或异常情况。处理这些异常的关键是使用 `try-except` 语句来捕获异常并执行适当的操作,从而保证程序的正常执行。

不知道是什么异常时怎么操作

当不确定发生了什么类型的异常时,可以使用以下方法来处理异常:

 

1. 使用 `try-except` 块捕获所有异常:可以使用 `try-except` 语句块来捕获所有异常,并执行一些通用的异常处理操作。

 

   try:
       # 可能会出现错误的代码
       result = 10 / 0
       print(result)
   except Exception as e:
       # 处理异常
       print("发生了一个错误:", str(e))

   在上述示例中,`try` 代码块中的 `10 / 0` 可能引发任何类型的异常。使用 `except Exception as e`,我们捕获并处理了所有异常,并将异常信息打印出来。

2. 使用 `sys.exc_info()` 获取异常信息:可以使用 `sys.exc_info()` 方法获取当前异常的信息,包括异常类型、异常值和异常追踪信息。

   

 import sys
   
   try:
       # 可能会出现错误的代码
       result = 10 / 0
       print(result)
   except:
       # 处理异常并获取异常信息
       exc_type, exc_value, exc_traceback = sys.exc_info()
       print("发生了一个错误:", exc_type)
       print("错误信息:", exc_value)
       print("异常追踪信息:", exc_traceback)

   在上述示例中,使用 `sys.exc_info()` 获取当前异常的信息,并打印出异常类型、异常值和异常追踪信息。

这些方法可以帮助你捕获并处理不确定的异常情况。尽管最好针对特定的异常类型进行处理,但在某些情况下,上述通用的异常处理方法可以提供有用的调试信息,并让你能够更好地了解正在发生的问题。

总结

异常是在程序执行过程中出现的错误或意外情况。Python中提供了多种异常类来表示不同类型的错误,如SyntaxError、TypeError、ValueError等。当遇到异常时,可以使用try-except语句来捕获异常并进行相应的处理。

当不确定发生了什么类型的异常时,可以采取以下方法处理异常:

1. 使用try-except块捕获所有异常,以在代码中的任何位置捕获并处理异常。使用except Exception可以捕获所有异常,并执行通用的异常处理操作。

2. 使用sys.exc_info()方法获取异常信息,包括异常类型、异常值和异常追踪信息。这可以在except块中使用,以获取关于异常的详细信息。

处理异常的目的是在程序中对错误进行适当的处理,以确保程序不会崩溃,并根据需要执行适当的操作。异常处理有助于提高程序的健壮性,并提供调试信息以便更好地了解和修复代码中的问题。

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

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

相关文章

孩子近视有必要用全光谱灯吗?全光谱led灯推荐

当然,有必要!全光谱LED灯的光源分布更加均匀,使空间更加美观舒适,而普通灯的光源分布可能会在一定范围内分布不均匀。全光谱它的使用寿命长达20-30万小时,而普通灯的使用寿命仅为1000-2000小时,因此在长期使用上&#…

list模拟

之前模拟了string,vector,再到现在的list,list的迭代器封装最让我影响深刻。本次模拟的list是双向带头节点的循环链表,该结构虽然看起来比较复杂,但是却非常有利于我们做删除节点的操作,结构图如下。 由于其节点结构特…

收发存和进销存有什么区别?

一、什么是收发存和进销存 1、收发存 收发存是供应链管理中的关键概念,用于描述企业在供应链中的物流和库存管理过程。 收发存代表了企业在采购、生产和销售过程中的物流活动和库存水平。 收(Receiving) 企业接收供应商送达的物料或产品…

归并排序算法

归并排序 算法说明与实现代码: 归并排序(Merge Sort): 归并排序是一种分治算法,它将列表分成两个子列表,分别进行排序,然后将排序好的子列表合并成一个有序列表。 package mainimport "fmt"fu…

手机商城免费搭建之java商城 开源java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框…

微信小程序代码优化3个小技巧

抽取重复样式 样式复用 我们会发现很多时候在开发的过程中会存在多个页面中都用到了同样的样式,那么其实之前有提到过,公用样式可以放在app.wxss里面这样就可以直接复用。 如:flex布局的纵向排列,定义在app.wxss里面 .flex-co…

win10安装cygwin

参考 Cygwin简介及其下载安装卸载_cygwin是什么软件_徐晓康的博客的博客-CSDN博客https://blog.csdn.net/weixin_42837669/article/details/114381405这个文章写的非常好,不过现在如果想安装多个包的话,采用gui的方式可以不行了,我采用的方式…

JavaScript 简单实现观察者模式和发布-订阅模式

JavaScript 简单实现观察者模式和发布-订阅模式 1. 观察者模式1.1 什么是观察者模式1.2 代码实现 2. 发布-订阅模式2.1 什么是发布-订阅模式2.2 代码实现2.2.1 基础版2.2.2 取消订阅2.2.3 订阅一次 1. 观察者模式 1.1 什么是观察者模式 概念:观察者模式定义对象间…

【Windows11】家庭版开启组策略指南

目录 背景新建一个cmd文件运行运行结果 背景 Win11找不到gpedit.msc怎么办?有用户通过命令窗口想要去打开本地组策略的时候,系统突然弹出了一个错误提示,显示系统缺少了gpedit.msc导致无法开启本地组策略编辑器了。那么这个情况要怎么去进行…

【Web开发指南】如何用MyEclipse进行JavaScript开发?

由于MyEclipse中有高级语法高亮显示、智能内容辅助和准确验证等特性,进行JavaScript编码不再是一项繁琐的任务。 MyEclipse v2023.1.2离线版下载 JavaScript项目 在MyEclipse 2021及以后的版本中,大多数JavaScript支持都是开箱即用的JavaScript源代码…

【Minio怎么用】Minio上传图片并Vue回显

流程: 目录 1.文件服务器Minio的安装 1.1 下载Minio安装后,新建1个data文件夹。并在该安装目录cmd 敲命令。注意不要进错目录。依次输入 1.2 登录Minio网页端 1.3 先建1个桶(buckets),点击create a bucket 2. Spr…

前端小练-仿掘金导航栏

文章目录 前言项目结构导航实现创作中心移动小球消息提示 完整代码 前言 闲的,你信嘛,还得开发一个基本的门户社区网站,来给到Hlang,不然我怕说工作量不够。那么这个的话,其实也很好办,主要是这个门户网站的UI写起来麻…

操作系统_进程与线程(三)

目录 3. 同步与互斥 3.1 同步与互斥的基本概念 3.1.1 临界资源 3.1.2 同步 3.1.3 互斥 3.2 实现临界区互斥的基本方法 3.2.1 软件实现方法 3.2.1.1 算法一:单标志法 3.2.1.2 算法二:双标志法先检查 3.2.1.3 算法三:双标志法后检查 …

HarmonyOS/OpenHarmony元服务开发-卡片使用自定义绘制能力

ArkTS卡片开放了自定义绘制的能力,在卡片上可以通过Canvas组件创建一块画布,然后通过CanvasRenderingContext2D对象在画布上进行自定义图形的绘制,如下示例代码实现了在画布的中心绘制了一个笑脸。 Entry Component struct Card { private c…

如何把几个视频合并在一起?视频合并方法分享

当我们需要制作一个比较长的视频时,将多个视频进行合并可以使得整个过程更加高效。此外,合并视频还可以避免出现“剪辑断层”的情况,使得视频内容更加连贯,更加容易被观众理解和接受。再有,合并视频还可以减少视频文件…

第三方电容笔支持随手写吗?性价比高的触控笔推荐

在日常生活中,电容笔的用途非常广泛,无论是配上笔记本,还是配上ipad,又或者是配上手机,都是非常好用的办公利器。首先要明确自己的需要,然后才能选择适合自己的产品。苹果Pencil因为具有特殊的重力压感&…

数据结构07:查找[C++][顺序、分块、折半查找]

图源:文心一言 考研笔记整理~🥝🥝 在数据结构和算法中,查找是一种常见的操作,它的目的是在一个数据集合中找到一个满足条件的元素。本文将介绍三种常用的查找方法,分别是顺序查找、折半查找和分块查找~&a…

Unity实现在3D模型标记

Canvas 模式是UI与3D混合模式(Render modelScreen space-Camera) 实现在3D模型标记,旋转跟随是UI不在3D物体下 代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public clas…

记一次sql注入分析与绕过【一】

下面是来自今天的项目,简单记录一下 手工注入 加单引号sql报错 sql语句如下,可见参数id原本未被引号包裹 SELECT DISTINCT u.* FROM t_user u WHERE u.name like %1% and u.account like %1% and u.state ? order by id desc limit 0,20 多方尝试…

warnings.filterwarnings(“ignore“) 是干嘛的

在python中运行代码经常会遇到的情况是——代码可以正常运行但是会提示警告 那么如何来控制警告输出呢?其实很简单,python通过调用warnings模块中定义的warn()函数来发出警告。我们可以通过警告过滤器进行控制是否发出警告消息 import warnings warnin…