Python语言学习笔记之六(程序调试及异常处理)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。

1、Python程序常见的错误

  1. 语法错误:不正确的缩进、未定义的变量、括号不匹配等.
  2. 运行时错误: 尝试访问不存在的文件、内存溢出等
  3. 类型错误: 将字符串与整数相加等.
  4. 逻辑错误: 程序没有按照预期的流程执行、条件判断不正确等.
  5. 输人错误: 无效的输入、输人的数据类型不正确等

1.1常见的错误-缩进错误

引发错误的原因:

  1. 未正确地缩进代码块:在Python中,代码块是通过缩进来区分的。例如,在i语句、循环、函数等中,代码块必须正确缩进。否则,将会引IndentationError.
  2. 混合使用不同的缩进方式:在Python中,可以使用空格或制表符(Tab) 进行缩进。但是混合使用这两种方式会导致IndentationError。因此,最好在整个项目中保持使用一种缩进方式
  3. 错谈的缩进级别:在嵌套代码块中,每一级的缩进必须正确对应。如果嵌套的代码块没有正确的缩进级别,将会引发IndentationError.
  4. 遗漏或添加了空格或制表符:在代码块中,每一行的缩进必须一致。如果某一行多添加或遗湄了空格或制表符,将会引发IndentationError.

1.2 常见的错误-类型错误

引发错误原因

  1. 将不同类型的值进行算术运算
  2. 使用None进行算术运算或比较将不同类型的值转换为预期类型.
  3. 当函数的期望类型与传递给它的实际类型不匹配时,也会引发TypeError.

1.3 常见的错误-索引错误

引发错误原因:

  1. 如果索引超出了序列的范围,将会引发IndexError.
  2. 尝试从一个空(没有元素) 的序列《如列表、元组等) 中获取元素时将会引发IndexError.
  3. 从字典中获取一个不存在的键时,将会引发KeyError.
  4. 在进行切片操作时,如果切片索引超出范围。将会引发IndexError.

1.4. 常见的错误-文件未找到错误

引发错误原因:

  1. 打开一个文件时,如果文件路径设置不正确,那么就会引发文件未找到错误。
  2. 打开一个不存在的文件时,Python将无法找到该文件,从而引发文件未找到错误。
  3. 打开的文件位于与当前工作目录不同的位置,你需要提供正确的相对路径.
  4. 在进行文件操作后,确保使用close()方法关闭文件,如果文件未正确关闭,那么在后续尝试访问或读取该文件时,可能会出现文件未找到错误.
  5. 如果Python进程没有足够的权限来访问指定的文件,也会引发文件未找到错误,

1.5 常见的错误提示词
​​​​​​​

​​​​​​​2、异常处理方法

2.1 第一种方法:try except

try except是一种Python中的异常处理结构,用于捕获和处理在程序执行过程中可能出现的异常

try 块中包含可能会引发异常的代码,而 except 块则用于捕获并处理这些异常。当在 try 块中执行代码时,如果发生了异常,程序会跳转到与该异常匹配的except 块进行处理。如果没有适当的 except 块来处理异常,异常将会继续向上传递,直到被顶层的exception handler (默认为 Python 的默认异常处理器)处理。

2.2 第二种方法:try except else

包含try,except和else三个部分。这种结构允许在try块中运行一段可能抛出异常的代码,如果异常被捕获,则执行except块中的代码,否则执行else块中的代码。

try块包含一段可能会抛出异常的代码,except块包含一段处理特定异常的代码。如果在try块中抛出了与except块中指定的异常类型相匹配的异常,那么就会执行这个except块中的代码。

else块包含一段正常情况下执行的代码。只有在try块中的代码成功执行,且没有抛出任何异常时,才会执行这个else块中的代码。

2.3 第三种方法:try except finally

try、except和finally 是 Python 中的异常处理语句,它们可以用来处理在代码执行过程中可能出现的异常情况。

try 语句块中包含可能会引发异常的代码,这些异常会被捕获并处理。在try 块中可以使用 except 语句来指定要捕获的异常类型,并在 except 块中编写相应的异常处理代码.

finally 语句块是可选的,它包含的代码无论是否发生异常都会被执行。这对于在异常处理后需要执行的清理操作非常有用,例如关闭文件或数据库连接等资源。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PyQt基础_009_ 按钮类控件QSlider

基本功能 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class SliderDemo(QWidget):def __init__(self, parentNone):super(SliderDemo, self).__init__(parent)self.setWindowTitle("QSlider 例子") self.resize…

Python函数定义、函数调用详解

函数是 Python 程序的重要组成单位,一个 Python 程序可以由很多个函数组成。前面我们己经用过大量函数,如 len()、max() 等,使用函数是真正开始编程的第一步。 比如在程序中定义了一段代码,这段代码用于实现一个特定的功能。问题来…

掌握Flask:从入门到精通指南

掌握Flask:从入门到精通指南 Flask 是一个轻量级的 Python Web 应用程序框架,具有简单易学、灵活性高等特点,适合用于快速开发 Web 应用程序。本文将全面介绍 Flask 框架的各个方面,包括基本概念、路由、模板渲染、表单处理、数据…

abapgit 安装及使用

abapgit 需求 SA[ BASIS 版本 702 及以上 版本查看路径如下: 安装步骤如下: 1. 下载abapgit 独立版本 程序 链接如下:raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap 2.安装开发版本 2.1 在线安装 前置条…

使用凌鲨管理本地git仓库

把本地git仓库添加到凌鲨后,可以更方便的获取git仓库的信息,比如查看commit记录,统计代码提交量,获取远程仓库的issue等功能。 功能 查看提交/分支/标记列表 查看提交差异 查看远程仓库和相关issue 每天代码量统计 添加本地仓库…

在线yml和properties相互转换

目前搜索到的大部分代码都存在以下问题: 复杂结构解析丢失解析后顺序错乱 所以自己写了一个,经过不充分测试,基本满足使用。可以直接在线使用 在线地址 除了yml和properties互转之外,还可以生成代码、sql转json等,可…

NSSCTF第14页(1)

[suctf 2019]checkin 利用了几种方式,发现都不行 1是修改mime类型,2是修改php标签为js标签,3是修改文件后缀 在试试用配置文件来上传 发现上传.user.ini文件成功 发现上传成功 上传的png图片 访问上传路径发现可以访问,上马成…

「Verilog学习笔记」状态机-非重叠的序列检测

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 根据题意 定义一个五位的中间变量lock 每次始终上升沿来临时 判断当前寄存器的低四位新数据是否等于10111 如果等于 则下一时刻lock应被清空 否则lock等于当前的lock的低四…

windows+deepin v23 linux 双系统 安装前后 与 删除后 的硬盘efi分区情况,deepin v23 beta2的一些体验

知乎版:https://zhuanlan.zhihu.com/p/669429404 windows下安装deepin v23 beta2 电脑8GB内存,一个256GB固态硬盘,已经安装windows11。 安装双系统前分区情况:主要包含 windows EFI分区 和 系统分区,并预留了64GB给d…

【产品经理】AI在SaaS产品中的应用及挑战

随着ChatGPT大模型在全球的爆火,AI迅速在各个行业内,助力于各行业的效率提升。而SaaS领域,AI同样也大有可为。 AI(人工智能,Artificial Intelligence的缩写)近一年来一直处于舆论风口,随着ChatG…

nacos配置变更导致logback日志异常

问题背景: 线上的服务突然内存爆满,查服务器突然发现,日志全部打印到了/tmp/tomcat.xxx.port目录下,后来对应操作时间,和nacos修改配置是同一时间发生的,但是疑惑的点是,nacos配置变更为什么会引起logback的…

Git 是一种分布式版本控制系统常用指令

Git 是一种分布式版本控制系统,用于跟踪文件的变化并协同多人在同一个项目中进行开发。以下是一些常用的 Git 指令和它们的使用介绍: 1. 初始化一个新仓库 git init 用途:在当前目录初始化一个新的 Git 仓库。使用:在项目根目录执…

BLIoTLink软网关,一键解决OT层与IT层的通信

在工业自动化领域,协议转换一直是一个重要的问题。不同的设备、系统往往使用不同的通信协议,这给数据采集、设备接入等带来很大的困扰。为了解决这个问题,各种协议转换软件应运而生。其中,BLIoTLink作为一款功能强大的嵌入式工业协…

动态规划:解决复杂问题的利器(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

量子计算:探索未来的计算技术

量子计算:探索未来的计算技术 引言 在过去的几十年里,我们见证了计算机技术从简单的计算和存储发展到复杂的数据处理和人工智能的飞速进步。然而,随着我们进一步探索科技的前沿,传统的计算方法开始显示出其局限性。在这种情况下,量子计算——一种基于量子力学原理的新型计…

一文读懂Asyncio

什么是Asyncio asyncio 是用来编写并发代码的库,使用async/await语法。 asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。 asyncio 往往是构建 IO 密集型和高层级结构化…

值得收藏的15 个好用的 iPad/iPhone 数据恢复工具

有时您需要从移动或平板设备恢复关键数据。 许多人已经开始在手机上存储重要文件,因为他们可以在旅途中或现在几乎在任何情况下轻松访问数据。 不言而喻; 您只需在手机上轻轻一按,即可轻松访问电子邮件、共享图片、编辑和共享文档、支付账单等。一般来…

《数据结构、算法与应用C++语言描述》-优先级队列-大根堆的C++实现

优先级队列 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_25Priority queue 定义 优先级队列(priority queue)是0个或多个元素的集合,每个元素都有一个优先权或值,对优先级队列执行…

智能监控平台/视频共享融合系统EasyCVR接入RTSP协议视频流无法播放原因是什么?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…

华天动力-OA8000 MyHttpServlet 文件上传漏洞复现

0x01 产品简介 华天动力OA是一款将先进的管理思想、 管理模式和软件技术、网络技术相结合,为用户提供了低成本、 高效能的协同办公和管理平台。 0x02 漏洞概述 华天动力OA MyHttpServlet 存在任意文件上传漏洞,未经身份认证的攻击者可上传恶意的raq文件…