技术标签: python判断正确错误
目录
1 错误和异常
1.1 错误
python 中的错误有两种,语法错误和逻辑错误
这种错误是我们应该避免的
1.2 异常
python中的异常是程序运行过程中产生的,有异常不一定要把程序停止,只要把异常抛出,然后查看异常产生的原因即可。
1.2.1 python中的异常种类
AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError使用一个还未被赋予对象的变量
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
## 2 异常处理
>
Python解释器检测到错误,触发异常,程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理
### 2.1 python 的异常处理机制
```python
try:
被检测的代码块
except 异常类型:
try中一旦检测到异常,就执行这个位置的逻辑
下面的except就是相当于if,但是不能把所有的的错误用except,于是就有了Exception
try:
print("====")
print(x)
except KeyError as x: # 命名错误
print(x) # 把错误的内容传递给x
except NameError as y:
print(y)
Exception 万能异常
x = 1
try:
print(x)
except Exception as e: # 都能处理异常
print(e)
else:
# pass
print("hello") # try内代码块没有异常则执行我
finally:
# pass
print("都会执行") # 通常用于清理工作,比如关闭数据连接
主动抛出异常
try:
raise TypeError('类型错误')
except Exception as e:
print(e)
自定义异常
class abcException(BaseException): # 这里是继承BaseException
def __init__(self,msg):
self.msg=msg
def __str__(self):
return self.msg
try:
raise abcException('类型错误')
except abcException as e:
print(e)
断言
assert 1 == 1
assert 1 == 2
try..except的方式比较if的方式的好处
try..except这种异常处理机制就是取代if那种方式,让你的程序在不牺牲可读性的前提下增强健壮性和容错性
异常处理中为每一个异常定制了异常类型(python中统一了类与类型,类型即类),对于同一种异常,一个except就可以捕捉到,可以同时处理多段代码的异常(无需‘写多个if判断式’)减少了代码,增强了可读性
使用try..except的方式
把错误处理和真正的工作分开来
代码更易组织,更清晰,复杂的工作任务更容易实现;
毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;
什么时候用异常处理
try…except应该尽量少用,因为它本身就是你附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的
这种东西加的多了,会导致你的代码可读性变差
文章浏览阅读834次。文章目录序正文开始引入threeJs材料收集实现原理实现步骤基础的全景完成完整Vue代码总结序在web的前端发展过程中,对于视觉化的要求已经越来越高有关于VR全景的效果也同样可以在网页中实现了,不用戴上VR设备,你也可以在网页上体会一把“身临其境”的感觉全景视觉之前的我ThreeJS系列博客中也曾经写过一篇关于如何制作全景效果的文章,不过只有上半部分的素材采集**(虽然这很重要)**这是我ThreeJs系列地址,如果对页面3D感兴趣的同学可以过去学习:https:_js vr全景看车
文章浏览阅读3.8k次,点赞19次,收藏5次。 字符串是Redis五种基本数据类型中的基础。同时也是我们在学习编程中接触最多的一种数据类型。本文将从使用、源码、编码三个部分讲解此数据类型在Redis中的使用。字符串 string是Redis中最简单的数据结构。Redis中所有的数据结构都是以唯一的key字符串作为名称,根据此key获取value,差异仅在于value的数据结构不同。string使用非常广泛,最常_redisson list中取出的对象是字符串
文章浏览阅读1.1w次,点赞5次,收藏19次。在vscode阅读编写c/c++代码时,体验不是很好,有时候会无法跳转。这里通过GNU Global工具解决这个问题。_c++ gnu global
文章浏览阅读2.2k次。Have you noticed above type of error in yourEclipse? When you’re creating a project with Dynamic Web Module 3.1 support, you should be using Java 1.7 or newer. Please follow below steps to_dynamic web module 3.1 requires java 1.7 or newer in eclipse. how to solve i
文章浏览阅读6.6w次,点赞43次,收藏427次。文章目录Tomcat介绍Container 结构分析Tomcat请求过程安装Tomcat优化tomcat启动速度Tomcat主要目录说明Tomcat 虚拟主机配置HTTP 请求过程Tomcat优化Tomcat介绍tomcat是一个免费的,开放源代码的Web应用服务器,是Apache软件基金会项目中的一个核心项目,由Apache ,Sun和一些公司以及个人共同开发而成,深受Java爱好者的喜爱,是一款比较流行的web应用服务器。Tomcat由一系列的组件构成,其中核心的组件有三个:(1) we_tomcat
文章浏览阅读2.4k次。在我们阅读内核代码时,经常会看到有的函数名称前面会带有“_ _”的双下划线,而有些又没有,这个有什么用呢?原来内核API函数具有这种名称的,通常都是一些接口的底层函数,应该谨慎使用。实质上,这里的双下划线就是要告诉程序员:谨慎调用,后则后果自负。举个例子,在内核模块的初始函数时,实际的定义如下: static int _ _init initializition_funct_linux内核函数 前置下划线
文章浏览阅读2.8k次,点赞2次,收藏20次。我们将编写一个程序,它将会自动下载GitHub网站上星星最多的python项目的信息,并对这些信息简单可视化。_根据api展示数据
文章浏览阅读92次。该问题遇到N次,被郁闷N次,特此记录以备不时之需由于n久不用em,而本机在公司使用dhcp自动获取ip,导致ip变化,而使em启动报出ora-12514 DBD ERROR: OCIServerAttach的错误不得不禁用dhcp,分配固定ip并重建em,过程如下:1.删除EMC:\Documents and Settings\User>emca -deconfig dbco..._重建em
文章浏览阅读3.5k次。一、 简述SVN版本控制服务SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion,也就是CVS的接班人!CVS是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。与它相类似的代码版本控制软件有subversion。多个开发人员通过一个..._svn-git
文章浏览阅读1.2k次。1.0 .h需要定义的文件#define SET_GPIO(A) NRF_GPIO->OUTSET = (1UL << (A)) #define CLEAR_GPIO(A) NRF_GPIO->OUTCLR = (1UL << (A))#define READ_GPIO(A) NRF_GPIO->IN&(1<<(A))#..._软件模拟spi需要分模式
文章浏览阅读338次。最近在使用layui开发项目后台, 遇见这个问题, 记录一下, 方便自己和大家查看需要根据类型 展示不同表单内容_lay-options 获取
文章浏览阅读3.4k次,点赞4次,收藏11次。转载请注明出处,谢谢!Newbit-Msming 2018-10-18ZigBee 3.0 EmberZNet EFR32MG 学习笔记-目录ZigBee 3.0 EmberZNet EFR32MG 学习笔记-9-Network Steering加网流程环境:Windows 10、Simplicity Studio 4SDK: EmberZnet SDK 6.4.0.0工程:新建..._zigbee network steering