这一章节主要讲解python的错误和异常处理

什么是错误和异常?及其区别?

错误:

1、语法错误:代码不符合解释器或者编译器语法。
2、逻辑错误:不完整或者不合法输入或者计算出现问题。
 
异常:执行过程中出现问题导致程序无法执行。
1、程序遇到逻辑或者算法问题。
2、运行过程中计算机错误(内存不够或者IO错误)。
 
错误和异常的区别:
错误:代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改。
 
异常分为两个步骤:
1、异常产生,检查到错误且解释器认为是异常,抛出异常。
2、异常处理,截获异常,忽略或者终止程序处理异常。
 
常见错误:
1:a:NameError
2.if True:SyntaxError
3.f = open('1.txt'):IOError
4.10/0:ZeroDivisionError
5.a =int('dd'):ValueError

try-except用法

try:
try_suite
except Exception[e]:
exception_block
else:
nor - exception
规则:
1.try用来捕获try_suite中的错误,并且将错误交给except处理.
2.except用来处理异常,如果处理异常和设置捕获异常一致,使用exception_block处理异常.
3.不能捕获语法错误,如果处理异常和设置捕获异常不一致,会将异常抛给python解释器.
try:
a = int('dd')
except ValueError,e:
print 'catch exception: %s'% e catch exception: invalid literal for int() with base 10: 'dd'
4.try未捕获的try_suite中的错误,输出else:nor-exception.
try:
a = int('')
except ValueError,e:
print 'catch exception: %s'% e
else:
print 'nor exception' nor exception

5.一旦try捕获到了错误,接下来错误后的代码将不执行,直接执行except.

try:
a = int('dd')
print 'success convert to int!'//一旦出现错误被捕获,这句代码将不执行
except ValueError,e:
print 'catch exception: %s'% e
else:
print 'nor exception' catch exception: invalid literal for int() with base 10: 'dd'

6.处理多个异常时,如果捕获到异常后,会按顺序逐个匹配。

try:
a = int('dd')
b = 20/0
print 'success convert to int!'
except ZeroDivisionError,e:
print 'catch ZeroDivisionError:%s'% e
except ValueError,e:
print 'catch ValueError: %s'% e
else:
print 'nor exception' catch ValueError: invalid literal for int() with base 10: 'dd'

try-finally用法

规则:
1、try-finally无论是否检测到异常,都会执行finally代码.
2. 作用是为异常处理事件提供清理机制,用来关闭文件或者释放资源.
 
情况一:
try:
try_suite
finally:
do_finally
1.如果try语句没有捕获错误,代码执行do_finally.
2.如果try语句捕获异常,程序首先执行do_finally.然后将捕获到的异常抛给python解释器.
try:
b = 20/0
finally:
print 'run to finally' run to finally Traceback (most recent call last):
File "<pyshell#178>", line 2, in <module>
b = 20/0
ZeroDivisionError: integer division or modulo by zero
try:
b = 20/2 //不管是否有错误,都会执行finally
finally:
print 'run to finally' run to finally

情况二:

try:
try_suite
except:
do_except
finally:
do_finally
规则:
1.若try语句没有捕获异常,执行完try代码段后,执行finally.
2若try捕获异常,首先执行except处理错误,然后执行finally.
try:
b = 20/0
except ZeroDivisionError,e:
print 'catch ZeroDivisionError %s'% e
finally:
print 'run to finally' catch ZeroDivisionError integer division or modulo by zero
run to finally//即使捕获到异常后,都会执行finally

情况三:

try:
try_suite
except:
do_except
else:
do_else
finally:
do_finally
规则:
1.若try语句没有捕获异常,执行完try代码段后,执行else代码段,最后执行finally。
2、若try捕获异常,首先执行except处理错误,然后执行finally。
try:
a = ''
b = 20/(int(a))
except ValueError,e:
print 'catch ValueError:%s'% e
else:
print 'nor exception'
finally:
print 'run to finally' nor exception
run to finally

raise 和 assert用法

raise语句用于主动抛出异常.
语法格式:raise[exception[,args]]
exception:异常类  args:描述异常信息元组 example:raise IOError ‘IO exception’

while True:
num = int(raw_input('enter 1~100:'))
if num == 0:
raise ZeroDivisionError('Value invalid')//主动抛出异常,中断程序
else:
result = 100/num enter 1~100:0 Traceback (most recent call last):
File "<pyshell#208>", line 4, in <module>
raise ZeroDivisionError('Value invalid')
ZeroDivisionError: Value invalid
assert语句用于检测表达式是否为真,如果为假,引发AsserttionError错误。
语法格式:assert expression[,args] expression:表达式  args:判断条件的描述信息  example:assert n==1,'n is ont 1'
 
def bar(s):
num = int(s)
assert num!=0,'n is zero!'
return 10/num >>> bar('') Traceback (most recent call last):
File "<pyshell#217>", line 1, in <module>
bar('')
File "<pyshell#216>", line 3, in bar
assert num!=0,'n is zero!'
AssertionError: n is zero

启动Python解释器时可以用-O参数来关闭assert。

>>>python -o error.py

关闭后,你可以把所有的assert语句当成pass来看。

 
 

python学习第十八天 --错误&异常处理的更多相关文章

  1. Python学习 Part6:错误和异常

    Python学习 Part6:错误和异常 两种不同类型的错误:语法错误和异常 1. 语法错误 语法错误,也被称作解析错误: >>> while True print('Hello w ...

  2. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  3. Python学习之路11☞异常处理

    一 错误和异常 part1:程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 de ...

  4. python学习笔记014——错误和异常

    Python有两种错误很容易辨认:语法错误和异常. 1 什么是语法错误 Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例 if i>4 print("if语句输出 ...

  5. python学习13-类的约束 异常处理 日志

    一 .约束 python中约束有两种 第一种,通过抛异常进行约束,这种是子类不按我要求的来,我就给你抛异常(推荐) 操作:提取一个父类. 在父类中给出一个方法.但在方法中不给出任何代码,直接抛异常 # ...

  6. Python学习日记(二十一) 异常处理

    程序中异常的类型 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基 ...

  7. Python学习(17)异常处理

    目录 Python 异常处理 Python 标准异常 异常处理 使用except而不带任何异常类型 使用except而带多种异常类型 try-finally 语句 异常参数 异常的参数 用户自定义参数 ...

  8. Python学习(八)异常处理

    Python 异常处理 程序出错时,会抛出异常,这想必在之前学习过程中已经见过不少. 这边具体说明下Python 的标准异常.如何捕捉异常.抛出异常 以及自定义异常. python 标准异常 我们先来 ...

  9. Python学习笔记整理(十七)异常处理

    一.异常基础 try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行 ...

随机推荐

  1. mysql 查询每个分组前N条记录

    mysql 查询每个分组前N条记录 假设存在表movie,  有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...

  2. Android中的四层架构,五块区域

    1. Linux内核层Android系统是基于Linux 2.6内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动.音频驱动.照相机驱动.蓝牙驱动.Wi-Fi驱动.电源管理等.2 ...

  3. C++ wstring string char* wchar_t相互转换

    标签: stringwstringwchar_tcharc++2013-12-19 00:29 3721人阅读 评论(0) 收藏 举报本文章已收录于: C++知识库 分类: C/C++(50) 1. ...

  4. linux教程之四

    相信不少想学习linux的新手们正愁不知道看什么linux学习教程好,下面小编给大家收集和整理了几点比较重要的教程,供大家学习,如需想学习更多的话,可到wdlinux学堂寻找更多教程.   linux ...

  5. Qt入门(2)——使用Qt编写的Hello world

    对于一个qt初学者来说,一步一步来直到作出一个hello world是最基础的入门. 从菜单:应用程序->编程中找到QtCreator

  6. 设计模式(十五):Iterator迭代器模式 -- 行为型模式

    1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用 ...

  7. HDU_2040——判断亲和数

    Problem Description 古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284.  ...

  8. css和js引用图片的路径问题

    原文转自:http://www.cnblogs.com/azumia/archive/2012/06/17/2552346.html 在JS文件中书写相对路径:JS文件是指在页面中引用的外部JavaS ...

  9. Java组合与继承生成的类中构造函数的执行顺序

    [程序实例] import java.util.*; class Meal{ Meal() { System.out.println("Meal Constructor"); } ...

  10. Javascript 精髓整理篇之二(函数篇)postby:http://zhutty.cnblogs.com

    今天总结的内容是javascript的function, 涉及到function顺便讲讲this. Function 是javascript的函数,也是js的执行单元.函数是JavaScript的一种 ...