【零基础入门学习Python---Python错误处理和异常保姆级教程】

news2024/11/16 1:49:06

在这里插入图片描述

🚀 Python 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 Python 🚀

在这里插入图片描述

🍔 目录

  • 🏹 Python错误处理和异常详解
    • 🔪 异常的概念和处理方式
    • 🔪 try-except语句块的使用
    • 🔪 捕获和处理特定类型的异常
    • 🔪 finally语句的作用
    • 🔪 自定义异常类的创建和使用
    • 🔪 异常处理的最佳实践
    • 📯 总结
    • 💬 共勉

🏹 Python错误处理和异常详解

在Python中,异常是一种运行时发生的的问题,它会干扰程序的正常执行流程。Python具有强大的异常处理机制,使得程序更加稳健和可维护。本文将介绍Python异常处理和最佳实践相关的内容,包括:

  • 异常的概念和处理方式
  • try-except语句块的使用
  • 捕获和处理特定类型的异常
  • finally语句的作用
  • 自定义异常类的创建和使用
  • 异常处理的最佳实践

在每个示例中,我们将以代码示例来说明相关的概念和技术。

🔪 异常的概念和处理方式

Python中的异常是指程序运行时出现问题导致程序无法正常执行。当Python遇到异常时,它会抛出一个异常对象,程序会停止执行并打印出异常信息。异常的处理方式可以帮助程序解决异常并继续执行。

以下是一个简单的示例编写:

try:
    x = int(input("请输入一个数字: "))
    y = int(input("请输入另一个数字: "))
    print(x / y)
except Exception as e:
    print("发生异常:", e)

在以上代码片段中,我们使用到了try-except语句块,如果try块中的代码运行正常,则except块中的代码不会被执行,否则except块中的代码会被执行,并且程序会打印出异常信息。

🔪 try-except语句块的使用

try-expect语句可以让我们捕获并处理Python中的异常,以避免程序崩溃。除此之外,它还可以防止我们的程序抛出异常。

以下是一个示例代码:

try:
    # 尝试打开一个不存在的文件
    with open("file.txt", "r") as f:
        print(f.readlines())
except FileNotFoundError:
    print("这个文件不存在!")
except Exception as e:
    print("其它错误发生:", e)

在此代码中,我们使用with语句来打开文件。如果文件不存在我们会处理文件未找到的异常,并为任何其他异常提供备用的处理。

🔪 捕获和处理特定类型的异常

有时候,我们需要捕获特定类型的异常并对它们进行处理。Python中可以使用多个except语句来处理不同类型的异常。

以下是一个示例代码:

try:
    a = int(input("请输入整数"))
    b = 5 / a
    print(b)
except ZeroDivisionError:
    print("错误发生: 除数不能等于0!")
except ValueError:
    print("错误发生: 输入的数据不是整数类型!")

在这个示例中,我们使用int()函数将字符串转换为整数,如果输入的字符串无法转换为整数,ValueError将会被抛出,并被我们的代码所捕获。

🔪 finally语句的作用

finally语句在try-except块中起着重要的作用,无论是否发生异常,finally语句中的代码块都会被执行。

以下是一个示例代码:

try:
    print("进入try块")
except:
    print("发生异常")
finally:
    print("无论是否发生异常,finally语句中的代码块都将被执行。")

在以上代码片段中,无论try块中是否出现异常,finally块中的代码都会一定会被执行。

🔪 自定义异常类的创建和使用

Python允许程序员自定义异常类,创建一个自定义的异常类可以让你捕获和处理特定类型的错误情况。

以下是一个示例代码:

class MyError(Exception):
    pass

def example():
    try:
        raise MyError("这是一个自定义的错误!")
    except MyError as e:
        print(e)

在这个示例中,我们定义了一个自定义的异常类MyError,并将其与raise语句一起使用来引发一个自定义的异常。这个示例还展示了如何在try-except块中捕获并处理自定义异常。

🔪 异常处理的最佳实践

以下是Python中异常处理的最佳实践:

  • 不要忽略异常,要在代码中处理异常。
  • 只捕获你需要处理的异常类型,并让其他异常传递到最外层的异常处理程序。
  • 在错误消息中包含足够的信息来帮助我们了解发生了什么。
  • 对不同类型的异常使用不同的处理方法。

以下是一个示例代码:

try:
    # 在这里进行文件操作
    with open("file.txt", "r") as f:
        print(f.read())
except FileNotFoundError as e:
    print("这个文件不存在:", e)
except MemoryError as e:
    print("内存错误:", e)
    raise e
except Exception as e:
    print("发生异常:", e)
    raise e
else:
    print("文件读取成功!")
finally:
    print("清理操作。")

在以上代码片段中,我们对FileNotFoundError和MemoryError进行了处理,并只需简单地提交其他类型的异常。在except块中重新引发了异常以帮助我们了解发生了什么,最后在finally块中对异常处理进行了清理。

📯 总结

本文中,我们介绍了Python中异常处理和最佳实践相关的内容,包括异常的概念和处理方式、try-except语句块的使用、捕获和处理特定类型的异常、finally语句的作用、自定义异常类的创建和使用以及异常处理的最佳实践。Python的异常处理机制使得我们的程序更加健壮、更加出色和可维护,通过掌握异常处理的相关技术和最佳实践,我们可以大大提高程序的功能和优越性。

💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【图像处理OpenCV(C++版)】——5.3 图像平滑之均值平滑(滤波)

前言: 😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快…

Flutter学习四:Flutter开发基础(一)Widget

目录 0 引言 1 Widget 简介 1.1 Widget 概念 1.2 Widget 接口 1.3 Flutter中的四棵树 1.4 StatelessWidget 1.4.1 简介 1.4.2 Context上下文 1.5 StatefulWidget 1.6 State 1.6.1 简介 1.6.2 State生命周期 1.7 在 widget 树中获取State对象 1.7.1 通过Context…

详解如何使用nvm管理Node.js多版本

目录 NVM进行NodeJS多版本管理 背景 安装步骤 1. 下载nvm安装包 2. 安装nvm 使用步骤 下载nodejs 切换版本nodejs ​编辑 常用命令 NVM进行NodeJS多版本管理 背景 有的时候开发环境需要多个NodeJS的版本,这个时候就可以用NVM进行管理。 安装步骤 1. 下载n…

9 从0开始学PyTorch | 过拟合欠拟合、训练集验证集、关闭自动求导

这一小节在开始搞神经网络之前,我们先熟悉几个概念,主要还是把模型训练的流程打通。 过拟合和欠拟合 我们在日常的工作中,训练好的模型往往是要去评价它的准确率的,通过此来判断我们的模型是否符合我的要求。 几个可能的方案是&…

国外学位论文去哪里查找下载

查找下载国外博士论文最合适的文献数据库就是ProQuest学位论文全文数据库。 ProQuest学位论文全文数据库覆盖了大部分北美地区高等院校以及世界其他地区数千个高等院校每年获得通过的博硕士论文。是将ProQuest公司PQDD文摘库(现名PQDT)中适合中国科研人…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2023)

Windows 11 绕过 TPM 方法总结,通用免 TPM 镜像下载 (2023 年 6 月更新) 在虚拟机、Mac 电脑和 TPM 不符合要求的旧电脑上安装 Windows 11 的通用方法总结 请访问原文链接:https://sysin.org/blog/windows-11-no-tpm/,查看最新版。原创作品…

nuxt3 多级动态路由

需求: 写法: 对应 文件目录 pages\product\[class]\[brand]\[SPU].vue pages/ --| product/ ----| [class] ------| [brand] --------| [SPU].vue script 内跳转方法 const router useRouter() const nuxtApp useNuxtApp()const jumpSPU () >…

caffeine和google-guava cache缓存使用详解和源码介绍

google-guava cache 1.pom引入其依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version></dependency> 2.具体使用 com.google.common.cache.LoadingCache<Strin…

【selenium】问题记录

1、驱动和浏览器版本不一致 报错&#xff1a;selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 106 问题原因&#xff1a; chrome版本114&#xff0c;Chromedriver版本106 …

机器学习之深度神经网络

目录 卷积神经网络与全连接神经网络 前向后向传播推导 通用手写体识别模型 人脸识别模型 电影评论情感分析模型 卷积神经网络与全连接神经网络 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;和全连接神经网络&#xff08;Fully Conn…

Django学习笔记-用户名密码登录

笔记内容转载自 AcWing 的 Django 框架课讲义&#xff0c;课程链接&#xff1a;AcWing Django 框架课。 CONTENTS 1. 扩充Django数据库2. 实现获取用户信息3. 渲染登录与注册界面4. 实现登录与登出功能5. 实现注册功能6. 修改获取用户信息 1. 扩充Django数据库 首先我们先在 s…

JavaWeb学习路线(7)——文件上传

一、概念 &#xff08;一&#xff09;文件上传概念&#xff1a; 指将本地的图片、视频、音频等文件上传到服务器&#xff0c;供其他用户浏览或下载的过程。 &#xff08;二&#xff09;前端文件上传三元素 method“post”&#xff08;form&#xff09;enctype“multipart/for…

四、Bean 的作用域,Bean 的自动装配以及通过注解实现 Bean 的自动装配

文章目录 一、Bean 的作用域二、Bean 的自动装配三、通过注解实现 Bean 的自动装配 一、Bean 的作用域 Spring 官网 Bean 的作用域讲解 单例(Singleton)作用域&#xff1a;在这种作用域下&#xff0c;容器只会创建一个Bean实例对象&#xff0c;无论该Bean被注入到多少个其它B…

Unity使用MySQL

效果&#xff1a; 问题记录&#xff1a; unity mysql “The given key ‘utf8mb4‘ was not present in the dictionary” – 我这里数据库字符集没有utf8&#xff0c;改选utf8mb4 – 这个改了&#xff0c;那么MySQL配置文件也得改了。如下&#xff1a; – 然后还报错&…

字符、字符集、编码

一、基本概念 在计算机中&#xff0c;所有的内容都是以二进制数据存储的&#xff0c;而我们在屏幕上看到的字和符号以及看不到的字符都是二进制数据转换后的结果。将字符按照某种规则转成对应的二进制数据&#xff0c;这个过程称为编码&#xff1b;而相对应的&#xff0c;将二…

Azure获取linux服务器磁盘和控制台disk的对应关系

从Azure控制台上删除/卸载服务器上不用的磁盘时&#xff0c;需要确定服务器上磁盘和控制台上显示的磁盘的对应关系。以免当有多块磁盘时&#xff0c;卸载了错误的磁盘&#xff0c;引起生产事故。 通过LUN确定磁盘对应关系 什么是LUN&#xff1f; 逻辑单元号 (LUN) 是用于标识…

Vue之事件处理(v-on)

文章目录 前言一、v-on基本使用二、使用举例1.传参和不传参使用2.$event占位代表事件对象3.函数用箭头函数时this作用域4.正常未用箭头函数的this指向&#xff08;与未用箭头函数作比较&#xff09; 总结 前言 v-on&#xff1a;事件绑定 一、v-on基本使用 格式&#xff1a;&l…

Linux安装ElasticSearch和Kibana

es官网下载地址&#xff1a;https://www.elastic.co/cn/downloads/past-releases#elasticsearch 可以去官网下载包然后放到服务器 也可以使用wget进行下载安装 如果使用wget方式下载的话需要先安装 安装wget yum install -y wgetwget下载es&#xff1a;wget https://artifacts…

B+树的设计步骤

1.节点的结构&#xff08;如下图&#xff09; &#xff08;1&#xff09;键值对--key是标识&#xff1b;value是存储的具体数据 &#xff08;2&#xff09;节点的子节点--存储的是具体的子节点 &#xff08;3&#xff09;节点的后节点--标记后一个节点 &#xff08;4&#xff0…

JSP实现自定义标签【上】

目录 一、基础概念 1、标签语言的形式或结构 2、分类 二、自定义标签的开发及步骤 三、标签生命周期 1、返回值 四、案例 1、if 2、out 一、基础概念 JSP自定义标签是一种扩展JSP标记语言的方法。通过自定义标签&#xff0c;我们可以将自定义功能封装在一个独立的标签…