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

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

时间:2023-11-23 14:03:27浏览次数:36  
标签:11 缩进 错误 Python 程序调试 引发 except 异常 代码

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

常见的错误-缩进错误

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

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

 常见的错误-类型错误

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

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

 常见的错误-索引错误

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

第 11 节 Python程序调试和异常处理技巧_缩进_03

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

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

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

 

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

 异常处理方法

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

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

 异常处理方法

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

第 11 节 Python程序调试和异常处理技巧_缩进_07

 

第 11 节 Python程序调试和异常处理技巧_缩进_08

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

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

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

 

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

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

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

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

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

 

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

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

 

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

异常汇总

pycharm 调试技巧

 



标签:11,缩进,错误,Python,程序调试,引发,except,异常,代码
From: https://blog.51cto.com/simadi/8528907

相关文章

  • 解决python运行报错Hint: make sure your test modules/packages have valid Python n
    解决方案:在pycharm中的Terminal中运行:pip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simple-rrequirements.txt问题解决优秀不够,你是否无可替代欢迎关注我的微信公众号:软件测试君......
  • 20211105李宜时TCP/IP网络编程学习笔记13
    20211105李宜时TCP/IP网络编程学习笔记1.网络编程简介网络编程是指编写能够在网络中传输数据的程序,比如互联网。在Linux系统中,网络编程通常涉及使用套接字API。2.TCP/IP协议TCP/IP是一组用于互联网数据交换的协议。它包括传输控制协议(TCP)和网络互联协议(IP)。3.IP主机......
  • python全局锁总结
    一、用Python写个死循环,把N核CPU的核心全部跑满importthreading,multiprocessingdefloop():x=0whileTrue:x=x^1foriinrange(multiprocessing.cpu_count()):t=threading.Thread(target=loop)t.start()启动与CPU核心数量相同的......
  • Python 使用SQLAlchemy数据库模块
    SQLAlchemy是用Python编程语言开发的一个开源项目,它提供了SQL工具包和ORM对象关系映射工具,使用MIT许可证发行,SQLAlchemy提供高效和高性能的数据库访问,实现了完整的企业级持久模型。ORM(对象关系映射)是一种编程模式,用于将对象与关系型数据库中的表和记录进行映射,从而实现通过面向......
  • 【Python&GIS】基于Python面矢量转换线矢量
    ​        今天有些不一样,发这篇文章并不是项目需要。单纯的想到有这个功能没使用Python实现,所以就去研究了一下,第一时间就和大家分享。如何使用Python的osgeo库实现面矢量数据与线矢量数据的互相转换。一、导入所需库importosfromosgeoimportogr二、面转线......
  • python脚本把日志转成excel
    之前go写的,转成了python版本,日志是json格式的,按行读取{"aid":"1111","cid":"2222","callback_url":"http:\/\/ad.toutiao.com\/track\/activate\/?callback=B.eDCQxxxxxGCB&os=0&muid=","advertiser_id"......
  • python编译成可执行文件
    安装pipinstallpyinstaller执行pyinstaller--onefilexxxxx.py会在当前文件的同级目录生成dist文件夹,可执行文件就在里面......
  • Python通过tushare获取股票历史数据
    一、使用Tushare获取可参照官网:https://tushare.pro/步骤1:安装Tushare库在Python环境中使用pip命令安装Tushare库:pipinstalltushare步骤2:导入Tushare库在Python代码中导入Tushare库:importtushareasts步骤3:设置TushareToken在使用Tusha......
  • 基于python开发的股市行情看板
    近期股市又骚动起来,回忆起昔日炒股经历,历历在目,悲惨经历让人黯然神伤,去年共投入4000元入市,最后仅剩1000多,无奈闭关修炼,忘记股市,全身心投入代码世界,享受代码带来的乐趣。近日,当看到别人用python进行量化投资暴富的消息,顿时振奋,立刻学习起python数据分析之道,开发了一个股市行情看板,希......
  • 基于python的种子搜索网站-开发过程
    本讲会对种子搜索网站的开发过程进行详细的讲解。 项目开发过程项目简介该项目是基于python的web类库django开发的一套web网站,做为本人的毕业设计。本人的研究方向是一项关于搜索的研究项目。在该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索和更新。网站域名......