Python异常原理及异常捕捉实现过程解析_python

来源:脚本之家  责任编辑:小易  

Python异常类 Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以

关于选课程序,最近着实有点忙,没机会复习os、pickle两部分模块,所以数据储存和字典读取成为了一个问题,大致原理知道,但是具体操作可能还是得返回去再好好看看,所以目前就提前开始学习新的知识了,虽然今天感觉str的相关方法忘的是干干净净的,但是我有pycharm。

没有成功的时候,就会有except,你不捕获,直接在except下处理或调用就好了

今天主要内容是关于异常,其实有点想最开始刚学的感觉,比较简单。

1、可以用python自带的安装工具,pip install numpy scipy 等。2、如果

  异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下:

如果页面是GB18030编码,而数据库是GBK编码,一般来说是不用转换的。GB18030是GBK的超

  错误被分为了两种:

下面有两种解决方法,第一种是类似if..else..;另外一种是使用语句来实现继续执行;方法一:使

  1.语法错误,基本pycharm都会帮你显示出来,不该犯的

【透视眼少女】据美媒报道,迈阿密14岁少女LauraCastro具有一双神奇透视眼,她可以清楚看到木板,石头、钢板,甚至4英寸厚水泥后的景象。出生时她还正常,10岁时眼球变成白色,逐渐发现自己具备这功能。医生说她眼球一切正常。你想拥有这样的透视眼吗?【世界上最危险的游泳池——魔鬼池】在非洲津巴布韦和赞比亚两国交界处的维多利亚瀑布,旱季来临时,水量减少并趋于平静,悬崖顶端边缘的岩石形成一堵天然的围墙,使河水不再奔流而下。被岩石挡住的少量河水在瀑布顶端形成一个天然水池,因为池子位于悬崖边上,被称为世界上最危险的游泳池。【你见过土笋的真面目么】很多人吃过土笋冻,可是很少人见过土笋冻的原料。这就让你们

  2.逻辑错误,不太容易看出来,pycharm也不管,只有Python解释器是真爱,但是也得等到真的运行的时候

谢谢邀请。章邯不肯投降刘邦,大约有两方面原因吧。首先,他投降项羽,就不是自愿的,也不是战败被俘虏,而是因为赵高要杀他,为了活命,被迫投降了项羽。所以他投降项羽,并非卖主求荣,而是情非得已。而投降项羽之后,他手下二十万秦军被项羽坑杀,估计他内心也是很愧疚的,没想到自己活命造成二十万秦军子弟被杀,心理有较大阴影。这也给他造成了极大的骂名,也是刘邦可以快速击败他们三人的原因之一,因为秦人都深恨他们。恐怕内心深处,他也深恨自己吧。而后来之所以不肯投降刘邦,估计一则是不想被认为是个一再投降的软骨头,不想增加骂名。二则是被杀了二十万秦军多少有点阴影,怕重蹈覆辙吧。而另一方面,由于秦人非常痛恨他,如果失去了

#TypeError:int类型不可迭代 for i in 3: pass #ValueError num=input(">>: ") #输入hello int(num) #NameError aaa #IndexError l=['egon','aa'] l[3] #KeyError dic={'name':'egon'} dic['age'] #AttributeError class Foo:pass Foo.x #ZeroDivisionError:无法完成计算 res1=1/0 res2=1+'str'

为什么医生老要我们拔智齿?你是不是也问过牙医下面这些问题?对话1患者1:我的智齿不痛不痒,为什么医生你要我拔掉?医生:虽然你的智齿不痛不痒,但是位置不正,先上两张直观图看看。(智齿位置不正)(智齿位置不正)这分别是右下和左下两颗智齿,就是因为位置不正,虽然它自身没坏,但它把前面的牙齿破坏出一个大洞,也就是“虫牙”,然后拖着没处理,导致牙髓也感染了,牙髓炎发作痛得别人不要不要的,你也想试试吗?对话2患者2:那我的智齿长正了,医生你为什么也要我拔掉呢?医生:虽然你的智齿长正了,但是它跟前面牙齿的邻接关系不好,吃东西老是塞牙,时间长了也会跟上面一样。就算不会长“虫牙”,也极可能导致牙龈发炎出血,更厉

  下面是今天最为重要的部分:

您好!一辆车不可能是十全十美的,都会有自己的缺点,主要看你更加注重什么,有的厂家产品出现问题但是解决起来比较快,而有的厂家虽然知道问题但是忽视客户的反馈,一直不解决。车质网7月份轿车与SUV的投诉量,当然并不能单单从投诉数量判断车辆的好坏,投诉销量比也是非常重要的参考依据。

  在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,一个异常标识一种错误

AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x

IOError 输入/输出异常;基本上是无法打开文件

ImportError 无法引入模块或包;基本上是路径问题或名称错误

IndentationError 语法错误(的子类) ;代码没有正确对齐

IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

KeyError 试图访问字典里不存在的键

KeyboardInterrupt Ctrl+C被按下

NameError 使用一个还未被赋予对象的变量

SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)

TypeError 传入对象类型与要求的不符合

UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,

导致你以为正在访问它

ValueError 传入一个调用者不期望的值,即使值的类型是正确的

  更多异常(有空还是要挨个错一遍):

ArithmeticError

AssertionError

AttributeError

BaseException

BufferError

BytesWarning

DeprecationWarning

EnvironmentError

EOFError

Exception

FloatingPointError

FutureWarning

GeneratorExit

ImportError

ImportWarning

IndentationError

IndexError

IOError

KeyboardInterrupt

KeyError

LookupError

MemoryError

NameError

NotImplementedError

OSError

OverflowError

PendingDeprecationWarning

ReferenceError

RuntimeError

RuntimeWarning

StandardError

StopIteration

SyntaxError

SyntaxWarning

SystemError

SystemExit

TabError

TypeError

UnboundLocalError

UnicodeDecodeError

UnicodeEncodeError

UnicodeError

UnicodeTranslateError

UnicodeWarning

UserWarning

ValueError

Warning

ZeroDivisionError

  为了保证程序的健壮性与容错性,即在遇到错误时程序不会崩溃,我们需要对异常进行处理,

   如果错误发生的条件是可预知的,我们需要用if进行处理:在错误发生之前进行预防

  之前也是有操作过的:

AGE=10 while True: age=input('>>: ').strip() if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的 age=int(age) if age == AGE: print('you got it') break

如果错误发生的条件是不可预知的,则需要用到try...except:在错误发生之后进行处理

#基本语法为 try: 被检测的代码块 except 异常类型: try中一旦检测到异常,就执行这个位置的逻辑 #举例 try: f=open('a.txt') g=(line.strip() for line in f) print(next(g)) print(next(g)) print(next(g)) print(next(g)) print(next(g)) except StopIteration: f.close()

#1 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。 s1 = 'hello' try: int(s1) except IndexError as e: # 未捕获到异常,程序直接报错 print e #2 多分支 s1 = 'hello' try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e) #3 万能异常Exception s1 = 'hello' try: int(s1) except Exception as e: print(e) #4 多分支异常与万能异常 #4.1 如果你想要的效果是,无论出现什么异常,我们统一丢弃,或者使用同一段代码逻辑去处理他们,那么骚年,大胆的去做吧,只有一个Exception就足够了。 #4.2 如果你想要的效果是,对于不同的异常我们需要定制不同的处理逻辑,那就需要用到多分支了。 #5 也可以在多分支后来一个Exception s1 = 'hello' try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e) except Exception as e: print(e) #6 异常的其他机构 s1 = 'hello' try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e) #except Exception as e: # print(e) else: print('try内代码块没有异常则执行我') finally: print('无论异常与否,都会执行该模块,通常是进行清理工作') #7 主动触发异常 try: raise TypeError('类型错误') except Exception as e: print(e) #8 自定义异常 class EgonException(BaseException): def __init__(self,msg): self.msg=msg def __str__(self): return self.msg try: raise EgonException('类型错误') except EgonException as e: print(e) #9 断言:assert 条件 assert 1 == 1 assert 1 == 2 #10 总结try..except

异常捕捉的优势:

1:把错误处理和真正的工作分开来

2:代码更易组织,更清晰,复杂的工作任务更容易实现;

3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;

主要是理论知识,后期使用才是关键,就像我要复习的pickle和os模块一样,就是这些了。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

我们怎样来捕捉Python程序中的异常

可采用下面的格式来捕获异常:

例如捕获ValueError:

python3 中的try... except Exception,e: ...怎么不能用了?变成什么了呢?

语法错误,应该改成下列语法:

python3 中捕捉异常需要使用try/except语句,具体格式如下:

try:

<语句>        #运行别的代码

except <名字>:

<语句>        #如果在try部份引发了'name'异常

except <名字>,<数据>:

<语句>        #如果引发了'name'异常,获得附加的数据

else:<语句>        #如果没有异常发生

编辑如下:

“拓展资料“:

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

  • 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

  • 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。

  • 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

python中的try的用法

try语句是python里面的控制语句,与except,finally配合使用处理在程序运行中出现的异常情况。

try的工作原理是:当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。      

假如在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,该怎么做呢?这可以使用finally块来完成。注意,在一个try块下,可以同时使用except从句和finally块。如果要同时使用它们的话,需要把一个嵌入另外一个。

扩展资料:

python的基础语法

Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。

python的用法

Python可以以交互模式运行,比如主流操作系统Unix/Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达操作指令即可实现交互操作。

一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。

参考资料来源:百度百科-Python

参考资料来源:python官网-try..finally

怎样在python中捕获线程抛出的异常

python的线程中的异常,通常不会给你显示出错的语句。你可以将thread函数,或者是Thread的run里的内容用整个儿的try catch包裹起来。搜索

然后这样

import traceback,sys

try:

threadfun1()

except:

traceback.print_exc(file=sys.stdout)

这样出错的时候就能定位到是哪一行代码了。

因为线程经常出现这种无显示错误位置的情形。后来都形成了习惯,要不把线程放在try catch里。要不就仔细检查线程函数,确保它没有错误,再放出去运行。

另外你还可以将线程函数的功能放在主进程里,单线程运行。这样错误位置就曝露出来了。

仅仅从你这个提示来看是无法定位错误的位置与类型的。

  • 本文相关:
  • python异常处理、自定义异常、断言原理与用法分析
  • python3 使用traceback定位异常实例
  • python运行异常管理解决方案
  • python实现异常信息堆栈输出到日志文件
  • python打印异常信息的两种实现方式
  • python实现数据清洗(缺失值与异常值处理)
  • python自动化测试之异常及日志操作实例分析
  • 使用python编写爬虫的基本模块及框架使用指南
  • python实现切割url得到域名、协议、主机名等各个字段的例子
  • python使用itchat实现手机控制电脑
  • python和go语言的区别总结
  • python实现计算字符串中出现次数最多的字符示例
  • 讲解python中for循环下的索引变量的作用域
  • python 性能提升的几种方法
  • python找出微信上删除你好友的人脚本写法
  • 详细介绍python进度条tqdm的使用
  • apistar:一个专为python3设计的api框架
  • 我们怎样来捕捉Python程序中的异常
  • python3 中的try... except Exception,e: ...怎么不能用了?变成什...
  • python中的try的用法
  • 怎样在python中捕获线程抛出的异常
  • python异常和错误的区别
  • python 中出现异常attributeerror 是什么异常
  • python 捕捉到异常怎么显示回溯信息
  • python3.5中,无法numpy怎么解决
  • python异常乱码如何解决
  • python 如何跳过异常继续执行
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页pythonpython异常处理、自定义异常、断言原理与用法分析python3 使用traceback定位异常实例python运行异常管理解决方案python实现异常信息堆栈输出到日志文件python打印异常信息的两种实现方式python实现数据清洗(缺失值与异常值处理)python自动化测试之异常及日志操作实例分析使用python编写爬虫的基本模块及框架使用指南python实现切割url得到域名、协议、主机名等各个字段的例子python使用itchat实现手机控制电脑python和go语言的区别总结python实现计算字符串中出现次数最多的字符示例讲解python中for循环下的索引变量的作用域python 性能提升的几种方法python找出微信上删除你好友的人脚本写法详细介绍python进度条tqdm的使用apistar:一个专为python3设计的api框架python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍python 中文乱码问题深入分析python科学计算环境推荐——anacpython逐行读取文件内容的三种方python中使用xlrd、xlwt操作exce利用python将xml文件解析成html文件的实现浅谈python的dataframe与series的创建方法python 定义只读属性的实现方式python面向对象思想与应用入门教程【类与深入讲解python函数中参数的使用及默认参使用url_helper简化python中django框架的python实现向qq群成员自动发邮件的方法python web程序搭建简单的web服务器python验证码识别教程之灰度处理、二值化python爬虫运用正则表达式的方法和优缺点
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved