首页 > 编程语言 >第 11 节 Python程序调试和异常处理技巧

第 11 节 Python程序调试和异常处理技巧

时间:2023-10-27 20:13:19浏览次数:38  
标签:11 缩进 错误 Python 程序调试 引发 except 异常 代码

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

常见的错误-缩进错误

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

 常见的错误-类型错误

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

 常见的错误-索引错误

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

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

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

 

 异常处理方法

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

 异常处理方法

定义了一个名为divide_numbers的函数,它接受两个参数:dividend和divisor。在函数内部,我们使用ty块来尝试执行除法操作,并将结果存储在变量result中。如果除数为零或两个操作数类型不正确,那么会引发异常。
在except块中,捕获了三种类型的异常:
ZeroDivisionError、TypeError和一个通用的
Exception。对于每种类型的异常,我们都打印了条相应的错误消息

 

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

ty块包含一段可能会抛出异常的代码。
except:块包含一段处理特定异常的代码。如果在try块中抛出了与except块中指定的异常类型相匹配的异常,那么就会执行这个except块中的代码。
else块包含一段正常情况下执行的代码。只有在try块中的代码成功执行,且没有抛出任何异常时,才会执行这个else块中的代码。

 

定义了一个名为calculate_sum的函数,它接受一个包含数字的列表作为参数。在函数内部,我们使用ty块尝试计算列表中数字的总和,并将结果存储在变量result中。如果列表中的元素不是数字类型,那么将引发TypeError异常。
在except块中,我们捕获了TypeError异常,并打印了一条相应的错误消息。如果ty块中的代码没有引发任何异常,那么将会执行ese块中的代码,并打印一条消息表示没有发生错误

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

ty语句块中包含可能会引发异常的代码,这些异常会被捕获并处理。在try块中可以使用except语句来指定要捕获的异常类型,并在except块中编写相应的异常处理代码。
finally语句块是可选的,它包含的代码无论是否发生异常都会被执行。这对于在异常处理后需要执行的清理操作非常有用,例如关闭文件或数据库连接等资源。

 

定义了一个名为divide_numbers的函数,它接受两个参数:dividend和divisor。在函数内部,使用ty块尝试执行除法操作,并将结果存储在变量result中。如果除数为零,那么将引发
ZeroDivisionError异常。无论是否发生异常,都会执行finally块中的代码,并打印一条消息。

 

raise是Python中的另一个异常处理语句,用于手动引发一个异常。你可以使用raise语句来创建自定义异常,或者使用内置的异常类型,如Exception。
"手动引发异常"是指使用raise语句主动触发一个异常。在异常处理的过程中,如果程序已经捕获并处理了一个异常,那么这个异常就会被程序正常处理,不会再次触发。但是,有时候我们可能需要再次触发这个异常,以便在程序的其他部分进行异常处理,这时就可以使用raise语句手动引发异常。

异常汇总

https://blog.csdn.net/qq_28807911/article/details/130468954

https://www.cnblogs.com/nmb-musen/p/10856023.html

pycharm 调试技巧

 

标签:11,缩进,错误,Python,程序调试,引发,except,异常,代码
From: https://www.cnblogs.com/simadi/p/17793058.html

相关文章

  • python django项目安装虚拟环境
    开发环境搭建1.虚拟环境+库安装django(mac使用python3)python-mvenvmyvenvmyvenv\Scripts\activate.batpipinstallDjango 2.startproject项目创建python-mdjangostartprojectdjangosite 3.startapp应用程序创建cddjangosite(外面的djangosite)......
  • Python44days
    Python前端开发使用Python可以对网页进行编写,按照针对浏览器或web服务器访问的标准化协议超文本传输协议(HTTP)运行,接受来自用户的请求并返回页面,并且还可以实现与Web客户端的交互比如PC页面,手机页面,平板页面,屏幕展现出来都是前端内容后端是指负责处理数据和逻辑的一端,也就是服......
  • 11.9日昆山工业智造展览会,台湾高技与您共赴智造之约!
    展会名称:2023昆山国际工业智造展览会(简称:苏工展)展会日期:11月9-11日展会地址:昆山花桥国际博览中心展位号:T26台湾高技将展示智能制造较新技术及全套解决方案。台湾高技,一家专注于精密传动元件研发和生产的高新企业,2023年11月9-11日即将参加昆山国际工业智造展览,在昆山花桥国际博览......
  • 手把手教你写Python爬虫
    Python爬虫是一个很常见的工具,它能够自动抓取网站数据,并将数据存储到本地或者其他地方。本文将教你如何使用Python编写爬虫,并详细介绍代码实现过程。准备工作在开始编写代码之前,我们需要安装几个必要的Python库,包括requests和beautifulsoup4。这两个库都可以使用pip命令......
  • Python实现短信循环压力测试教程
    一、安装依赖库在使用短信循环压力测试之前,需要先安装需要的依赖库——selenium和webdriver。其中,selenium是Python的一个第三方库,能够模拟浏览器的行为,进行自动化测试等操作。webdriver是浏览器的驱动程序,可以实现Python与浏览器之间的交互。pipinstallselenium安装完成后还需要......
  • Python 接口自动化 —— requests框架
    1.前言Python内置的urllib模块,也可以用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能。因此我们使用requests模块进行进行接口测试。requests官方文档资料地址:http://cn.python-requests.org/zh_CN/latest/2.环境安装cmd(win+R快捷键)输入:pipinstall......
  • Python中的equals用法介绍
      一、使用场景在Python中,equals(等于)经常用于比较两个对象是否相等。在Python中,使用==可以判断两个对象的值是否相等,使用is可以判断两个变量是否引用同一个对象。但是对于不同类型的对象,使用==方法可能会出现意想不到的结果。因此,在使用==判断两个对象是否相等时,需要注意以......
  • Python:爬取某软件站数据报错requests.exceptions.SSLError: HTTPSConnectionPool(hos
    使用Python爬取某网站数据时候,之前一直是好好的。突然就报错:requests.exceptions.SSLError:HTTPSConnectionPool(host='api.***.cn',port=443):Maxretriesexceededwithurl:/accounty1/login?analysis............检查发现,可能是IP地址存在代理导致网络环境一场。可以检......
  • 802.11无线网络权威指南学习笔记
    以前在CSDN博客写的,后来不用CSDN,改用cnblogs,没想到在搜索资料时发现了以前被人转载的笔记,做个记录https://blog.csdn.net/machiner1/article/details/41726539......
  • python 某音文件下载
    importtime#frompyqueryimportPyQueryaspqimportcommonMethodimportdatetimeimportrequestsimportreimportosimportjsonpattern_1='<sourceclass=""src="//v3-web.douyinvod.com/(.{486,488})type="">'......