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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫学习 异步爬虫(五)

多线程 多进程 协程 进程 运行中的程序 线程 被CPU调度的执行过程,操作系统 运算调度的min单位 在进程之中,进程中实际运作单位 from threading import Thread#创建任务 def func(name):for i in range(100):print(name,i)if __name__ __main__:#创建线程t1 Thread(target …

Nuxt.js:下一代Web开发框架的革命性力量

文章目录 一、Nuxt.js简介二、Nuxt.js的特点1. 集成Vue.js和Node.js2. 自动代码分割和优化3. 服务端渲染(SSR)4. 强大的路由管理5. 丰富的插件系统 三、Nuxt.js的优势1. 提高开发效率2. 降低维护成本3. 提高用户体验 四、Nuxt.js在实际应用中的案例1. 电…

前端:实现二级菜单(二级菜单悬浮在一级菜单左侧)

效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, i…

5V摄像机镜头驱动IC GC6208,可用于摄像机,机器人等产品中可替代AN41908

GC6208是一个镜头电机驱动IC摄像机和安全摄像机。该设备集成了一个直流电机驱动器的Iris的PID控制系统&#xff0c;也有两个通道的STM电机驱动器的变焦和对焦控制。 芯片的特点: 内置用于Iris控制器的直流电机驱动器 内置2个STM驱动程序&#xff0c;用于缩放和…

flink源码分析之功能组件(四)-slotpool组件I

简介 本系列是flink源码分析的第二个系列&#xff0c;上一个《flink源码分析之集群与资源》分析集群与资源&#xff0c;本系列分析功能组件&#xff0c;kubeclient&#xff0c;rpc&#xff0c;心跳&#xff0c;高可用&#xff0c;slotpool&#xff0c;rest&#xff0c;metrics&…

实用高效 无人机光伏巡检系统助力电站可持续发展

近年来&#xff0c;我国光伏发电行业规模日益壮大&#xff0c;全球领先地位愈发巩固。为解决光伏电站运维中的难题&#xff0c;浙江某光伏电站与复亚智能达成战略合作&#xff0c;共同推出全自动无人机光伏巡检系统&#xff0c;旨在提高发电效率、降低运维成本&#xff0c;最大…

react的开发中关于图片的知识

React是一个流行的JavaScript库&#xff0c;用于构建用户界面。在React开发中&#xff0c;图片是一个非常重要的元素&#xff0c;可以用于美化界面和展示内容。本篇博客将详细讲解React中关于图片的知识。 1. React中使用图片 在React中使用图片非常简单&#xff0c;只需要使…

智慧公厕为城市智慧管理提供强力有的数据支持

在当今科技飞速发展的时代&#xff0c;城市管理正面临着前所未有的挑战与机遇。而在这个城市发展的脚步日新月异的同时&#xff0c;一项看似不起眼的技术却正在默默地为城市的智慧管理提供着强有力的支持——那就是智慧公厕。这些不起眼的公共设施不仅仅是人们日常生活的一部分…

hive里如何高效生成唯一ID

常见的方式&#xff1a; hive里最常用的方式生成唯一id&#xff0c;就是直接使用 row_number() 来进行&#xff0c;这个对于小数据量是ok的&#xff0c;但是当数据量大的时候会导致&#xff0c;数据倾斜&#xff0c;因为最后生成全局唯一id的时候&#xff0c;这个任务是放在一个…

基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境爬虫模型训练实际应用 模块实现1. 数据准备1&#xff09;爬虫下载原始图片2&#xff09;手动筛选图片 2. 数据处理1&#xff09;切割得到人物脸部2&#xff09;重新命名处理后的图片3&#xff09;添加到数据集 3. 模型训练及…

基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

uniapp 打包的 IOS打开白屏 uniapp打包页面空白

uniapp的路由跟vue一样,有hash模式和history模式, 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。…

视频监控平台EasyCVR多场景应用,AI视频分析技术助力行业升级转型

传统的视频监控系统建设&#xff0c;经常存在各方面的因素制约&#xff0c;造成管理机制不健全、统筹规划不到位、联网共享不规范&#xff0c;形成“信息孤岛”、“数据烟囱”。在监控系统的建设中缺乏统一规划&#xff0c;标准不统一、视频图像信息利用率低等问题日益突出。随…

华清远见嵌入式学习——C++——作业2

作业要求&#xff1a; 代码&#xff1a; #include <iostream>using namespace std;class Rect { private:int width;int height;public:void init(int w,int h);void set_w(int w);void set_h(int h);void show(); };void Rect::init(int w,int h) {width w;height h;…

红队专题-fuzz技巧

红队专题 0x00 知己知彼常见 waf 收集SecureSphere (Imperva)西数WTS-WAF安全狗D盾腾讯云 waf阿里云云盾Web应用防火墙云锁UPUPW安全防护宝塔网站防火墙网防G01护卫神智创防火墙腾讯云玄武盾ISG 0x01 waf 绕过(过狗)姿势 举例SQL注入篇1.内联注释绕过2.等价替换法&#xff1a;3…

血的教训--kail系统免密centos7的坑【高版本ssh免密低版本ssh的坑】

血的教训–kail系统免密centos7的坑【高版本ssh免密低版本ssh的坑】 最近下载了一个2023版本的kail系统&#xff0c;但是经过几次设置免密后&#xff0c;ssh过去一直让提供密码&#xff0c;所以就仔细的分析了一下&#xff0c;果然还是发现了点猫腻 接上一个博客&#xff0c;大…

本地MinIO存储服务通过Java程序结合Cpolar内网穿透进行远程访问

[本地MinIO存储服务通过Java程序结合Cpolar内网穿透进行远程访问] 前言 MinIO是一款高性能、分布式的对象存储系统&#xff0c;它可以100%的运行在标准硬件上&#xff0c;即X86等低成本机器也能够很好的运行MinIO。它的优点包括高性能、高可用性、易于部署和管理、支持多租户…

如何在代码中启动与关闭ROS节点

在ROS开发中&#xff0c;节点的管理是很重要的一部分&#xff0c;其中有一些节点大部分时候用不到&#xff0c;只会在特定情况下被启动&#xff08;比如建图节点&#xff09;同时这些节点在使用完后还需要被关闭&#xff0c;因此我们就需要在程序中对这些节点进行启动与关闭的管…

OpenMMlab导出FCN模型并用onnxruntime推理

导出onnx文件 直接使用脚本 import torch from mmseg.apis init_modelconfig_file configs/fcn/fcn_r18-d8_4xb2-80k_cityscapes-512x1024.py checkpoint_file fcn_r18-d8_512x1024_80k_cityscapes_20201225_021327-6c50f8b4.pth model init_model(config_file, checkpoin…

pgsql 更新A表的x字段通过查询b表的z字段

查询表t_local_warning_hit_source的send_time 更新到表t_local_warning_source WITH t2 AS ( SELECT ID, send_time FROM t_local_warning_hit_source WHERE send_time > 2023-09-27 00:00:00 AND send_time < 2023-11-28 00:00:00 ) UPDATE t_local_warning_source t…