python中错误和异常处理

错误和异常处理


在python中一共有2种错误:一种是语法错误,另外一种是异常。

语法错误


语法错误也叫做解析错误,是指python无法正确的识别代码的造成的。根本原因在于人的行为:手残,脑残和眼残的行为。

解决方法:按照正确的语法进行书写就没这个错误了!

异常


异常是指在语法正确的前提下,程序的报错就是异常。

它是在程序异常时单独存在的一个对象,可以对其进行获取或其他操作

异常的分类


AssertError               断言语句(assert)失败
AttributeError            尝试访问未知的对象属性
EOFError                  用户输入文件末尾标志EOF(Ctrl+d)
FloatingPointError        浮点计算错误
GeneratorExit             generator.close()方法被调用的时候
ImportError               导入模块失败的时候
IndexError                索引超出序列的范围
KeyError                  字典中查找一个不存在的关键字
KeyboardInterrupt         用户输入中断键(Ctrl+c)
MemoryError               内存溢出(可通过删除对象释放内存)
NameError                 尝试访问一个不存在的变量
NotImplementedError       尚未实现的方法
OSError                   操作系统产生的异常(例如打开一个不存在的文件)
OverflowError             数值运算超出最大限制
ReferenceError            弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
RuntimeError              一般的运行时错误
StopIteration             迭代器没有更多的值
SyntaxError               Python的语法错误
IndentationError          缩进错误
TabError                  Tab和空格混合使用
SystemError               Python编译器系统错误
SystemExit                Python编译器进程被关闭
TypeError                 不同类型间的无效操作
UnboundLocalError         访问一个未初始化的本地变量(NameError的子类)
UnicodeError              Unicode相关的错误(ValueError的子类)
UnicodeEncodeError        Unicode编码时的错误(UnicodeError的子类)
UnicodeDecodeError        Unicode解码时的错误(UnicodeError的子类)
UnicodeTranslateError     Unicode转换时的错误(UnicodeError的子类)
ValueError                传入无效的参数
ZeroDivisionError         除数为零

常见的错误操作:


IndexError 索引错误

lists = [1,3,6]
print(lists[3])

KeyError 键不存在

dicts = {'gp':'高坡','cr':'曹睿','tw':'唐伟'}
print(dicts['zj'])

nameError 变量不存在

print(ch)

AssertError 断言错误

assert 1>0
assert 3>5

IndentationError缩进错误

def myfunc():print('眼残')print('眼残')

错误异常处理


try:#尝试实现某个操作,#如果没出现异常,任务就可以完成#如果出现异常,将异常从当前代码块扔出去尝试解决异常

except 异常类型1:
#解决方案1:用于尝试在此处处理异常解决问题

except 异常类型2
#解决方案2:用于尝试在此处处理异常解决问题

except (异常类型1,异常类型2.…)
#解决方案:针对多个异常使用相同的处理方式

excpet:
#解决方案:所有异常的解决方案

else:
#如果没有出现任何异常,将会执行此处代码

finally:
#管你有没有异常都要执行的代码

处理过程:

try:#尝试执行代码区域。#如果没有错误,那就没啥事了,则执行else区域#如果出现错误,抛出错误异常对象,由下面的其他块尝试接受错误

except 异常类型1:
#如果try块扔出的异常类型和当前指定类型一直,那么则当前块接收错误,并且在当前区域给出错误的解决方案。(非必须)
#如果try块扔出的异常类型和当前指定类型不一直,则将异常扔到下一个代码块检测

except 异常类型2:
#如果try块扔出的异常类型和当前指定类型一直,那么则当前块接收错误,并且在当前区域给出错误的解决方案。(非必须)
#如果try块扔出的异常类型和当前指定类型不一直,则将异常扔到下一个代码块检测

except 异常类型3:
#如果try块扔出的异常类型和当前指定类型一直,那么则当前块接收错误,并且在当前区域给出错误的解决方案。(非必须)
#如果try块扔出的异常类型和当前指定类型不一直,则将异常扔到下一个代码块检测

except (异常类型4,异常类型5,…)
#如果try块扔出的异常类型和当前指任意定类型一直,那么则当前块接收错误,并且在当前区域给出错误的解决方案。(非必须)
#如果try块扔出的异常类型和当前指定类型不一直,则将异常扔到下一个代码块检测

except: #所有异常
#如果其他except块均不能接受异常对象,那么则当前块接受异常,并且进行处理即可(非必须)

else:
#try区域代码没有任何异常,则else区域执行(非必须)

finally:
#无论出现或者不出现异常,当前块都会执行

用户自定义错误和自定义抛出错误


用户自定义异常抛出操作

raise  异常对象

用户自定义异常类

class 异常类名(RuntimeError):
#定义用户抛出自定义异常对象时可以向对象中传入的内容信息(由用户自己决定)
def __init__(self,errormsg...):#接收用户创建对象时传入的错误信息,并且存入对象,方便后期使用self.errormsg = errormsg#...
pass

在try..except中接收异常对象

try:#尝试代码执行区域
except 异常类型 as 异常对象变量:#解决方案
except 异常类型 as 异常对象变量:#解决方案
#....

with语法


在文件操作中用于监控文件的使用状态,在文件不使用时自动关闭文件操作。

文件操作

try:#程序监控打开的1.txt文件with open('1.txt','r') as fp:#读取文件text = fp.read()print(text)
except:print('文件操作出错!')

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

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

相关文章

listview 每行后面的小箭头_主卧带小衣帽装修,这几个装修方案,你喜欢哪个?...

南京装修交流圈 - 知乎​www.zhihu.com现在大部分人购买的房子面积还是普遍偏小的,每行每业都有自己的服装讲究,不同的场地、见不同的人等等。家中能有一个衣帽间自然也就是心中所向往和追求的。能够有独立的一个房间来做衣帽间当然更好,今天…

【养成好习惯】使用pipreqs导出本项目使用的环境

pipreqs pipreqs可以帮你找到当前项目的所有组件及其版本。就是当别人给你一个程序的时候,你要在自己电脑上运行起来,就需要安装程序所依赖的组件,总不能自己一个一个找吧。 # 安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simpl…

开放医疗交通大数据技术 服务于公共便民领域

孙丕恕还建议,交通拥堵的数据也可以开放,孙丕恕介绍,目前已有导航软件有部分数据,但还有些滞后,如果能够做到实时更新数据,那么也可以为出行者避开拥堵,节约时间。此外,如果二手车的…

Nagios_在不同平台下的安装

Nagios 是一款开源的免费网络监视工具,致力于打造符合行业标准的 IT 基础架构的监控系统。Nagios 提供了服务器、网络和应用的完整的 IT 监控和报警,可以有效监控 Windows、Linux 和 Unix 的主机状态,以及交换机、路由器、打印机等网络设备。…

python中的模块和包

模块和包 一个模块就是一个包含python代码的文件。一个文件就是一个模块 为什么要使用模块 1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方便维护与管理 2.模块可以增加代码的重用率 3.模块可以当作命名空间如何定义自己的模块 …

2005年全球H.264编解码器荟萃

2005年全球H.264编解码器荟萃videosky.9126.com Peter Lee 2005-0920【摘要】H.264/AVC作为最新的视频编码标准,研究领域和产业界都非常看好该标准。尤其是产业界,针对H.264的软硬件编解码器可谓是百花齐放、百家争鸣。本文中,笔者对2005年全…

【Tensorflow】基于卷积神经网络实现车牌的识别

引言: 过去几周我一直在涉足深度学习领域,尤其是卷积神经网络模型。最近,谷歌围绕街景多位数字识别技术发布了一篇不错的paper。该文章描述了一个用于提取街景门牌号的单个端到端神经网络系统。然后,作者阐述了基于同样的网络结构…

脚本启动显示查询频繁被服务器防御_面对CC攻击,该如何进行防御

网站被攻击是一件十分让人恼火的事情,不仅仅是让网站速度变慢、访问异常,导致用户体验变差,用户大量流失,而且还会导致网站关键词排名下降甚至被降权,极大干扰了网站的正常稳定运行。那面对CC攻击,该如何进…

面对SDN/NFV部署挑战 网络厂商能做什么?

近年来,随着云计算的不断发展,网络虚拟化受到广泛关注,而作为网络虚拟化的实现方式,SDN自诞生之日起就担负着网络变革的使命。那么,SDN技术的驱动力是什么?SDN在引入现网的过程中,如何实现平滑无…

python中的tkinter模块

tkinter介绍 tkinter是python自带的GUI库,是对图形库TK的封装 tkinter是一个跨平台的GUI库,开发的程序可以在win,linux或者mac下运行 除此之外还存在很多图形库,例如 pythonWin 仅适合window的界面编程库 wxPython 第三方界面编…

PAT甲题题解-1011. World Cup Betting (20)-误导人的水题。。。

题目不严谨啊啊啊啊式子算出来结果是37.975样例输出的是37.98我以为是四舍五入的啊啊啊&#xff0c;所以最后输出的是sum0.005结果告诉我全部错误啊结果直接保留两位小数就可以了啊啊啊啊 水题也不要这么坑人啊啊啊啊 #include <iostream> #include <algorithm> #i…

【Django】文件上传以及celery的使用

上传文件、异步、初始化脚本 面试题&#xff1a; 项目中的静态文件处理&#xff08;JS/CSS/image&#xff09; 自己在机房内优化的方法&#xff1a;1. Nginx/lighttpd(lighty-douban)&#xff1a;Nginx 处理静态资源速度非常快&#xff0c;并且自身还带有缓存。2. 80: Nginx -&…

Android 查看每个应用的最大可用内存

http://blog.csdn.net/vshuang/article/details/39647167 Android 内存管理 &Memory Leak & OOM 分析 单个应用可用的最大内存 Android设备出厂以后&#xff0c;java虚拟机对单个应用的最大内存分配就确定下来了&#xff0c;超出这个值就会OOM。这个属性值是定义在…

分析一段H264视频数据

分析一段H264视频数据 Posted on 2007-05-31 09:42 vcommon 阅读(1968) 评论(8) 编辑 收藏 引用 分析 00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01 H264的数据流分为两种&#xff0c;一种是NAL UNIT stream(RTP),一种是 bits stream, 两者可以互相转换。我们分析的这个…

SVN在vs2013中使用

http://download.csdn.net/download/show_594/9112963 内包含VisualSVN 5.0.1的官方原版安装包及破解文件VisualSVN.Core.L.dll. 使用方法&#xff1a; 1、运行&#xff1a;VisualSVN-5.0.1.msi 进行原版的安装。 2、打开VisualSVN的安装路径。进入其子目录bin。将压缩包内的Vi…

springboot springmvc mybatis_12道重点的Spring Boot面试题,帮你整理好了!

今天跟大家分享下SpringBoot常见面试题的知识。最新2020整理收集的一些面试题&#xff08;都整理成文档&#xff09;&#xff0c;有很多干货&#xff0c;包含mysql&#xff0c;netty&#xff0c;spring&#xff0c;线程&#xff0c;spring cloud等详细讲解&#xff0c;也有详细…

【数据分析】快速获取微博用户数据,图片,视频

功能输出实例运行环境使用说明 下载脚本安装依赖程序设置设置数据库&#xff08;可选&#xff09;运行脚本按需求修改脚本&#xff08;可选&#xff09; 如何获取user_id添加cookie与不添加cookie的区别&#xff08;可选&#xff09;如何获取cookie&#xff08;可选&#xff09…

“云计算”越来越重要 但更重要的是“云安全”

据Gartner公司的预测&#xff0c;云安全服务业务继续保持强劲&#xff0c;2017年最终将达到59亿美元的规模&#xff0c;比2016年上涨了21&#xff05;。 云安全服务市场的增长速度将超过整体信息安全市场。Gartner表示&#xff0c;电子邮件的安全性&#xff0c;网络安全和身份识…

HTML中Head头

HTML中Head头 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网页标题</title> </head> <body>网页显示内容 </body> </html>HEAD标签里面负责对网页进行一些设置以及…

H.264的两个概念:DC系数和AC系数。 MV预测过程详解(附图)

在做熵编码之前&#xff0c;先明确两个概念&#xff1a;DC系数和AC系数。 量化后得到的仍是64个系数&#xff0c;量化并没有改变系数的性质。大家知到DCT变换是将数据域从时&#xff08;空&#xff09;域变换到频域&#xff0c;在频域平面上变换系数是二维频域变量u和v的函数。…