python学习第十八天 --错误&异常处理
这一章节主要讲解python的错误和异常处理
什么是错误和异常?及其区别?
错误:
try-except用法
try:
try_suite
except Exception[e]:
exception_block
else:
nor - exception
try:
a = int('dd')
except ValueError,e:
print 'catch exception: %s'% e catch exception: invalid literal for int() with base 10: 'dd'
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用法
try:
try_suite
finally:
do_finally
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
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
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用法
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
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学习第十八天 --错误&异常处理的更多相关文章
- Python学习 Part6:错误和异常
Python学习 Part6:错误和异常 两种不同类型的错误:语法错误和异常 1. 语法错误 语法错误,也被称作解析错误: >>> while True print('Hello w ...
- Python学习笔记七-错误和异常
程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...
- Python学习之路11☞异常处理
一 错误和异常 part1:程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 de ...
- python学习笔记014——错误和异常
Python有两种错误很容易辨认:语法错误和异常. 1 什么是语法错误 Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例 if i>4 print("if语句输出 ...
- python学习13-类的约束 异常处理 日志
一 .约束 python中约束有两种 第一种,通过抛异常进行约束,这种是子类不按我要求的来,我就给你抛异常(推荐) 操作:提取一个父类. 在父类中给出一个方法.但在方法中不给出任何代码,直接抛异常 # ...
- Python学习日记(二十一) 异常处理
程序中异常的类型 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基 ...
- Python学习(17)异常处理
目录 Python 异常处理 Python 标准异常 异常处理 使用except而不带任何异常类型 使用except而带多种异常类型 try-finally 语句 异常参数 异常的参数 用户自定义参数 ...
- Python学习(八)异常处理
Python 异常处理 程序出错时,会抛出异常,这想必在之前学习过程中已经见过不少. 这边具体说明下Python 的标准异常.如何捕捉异常.抛出异常 以及自定义异常. python 标准异常 我们先来 ...
- Python学习笔记整理(十七)异常处理
一.异常基础 try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行 ...
随机推荐
- CSS之Position详解
CSS的很多其他属性大多容易理解,比如字体,文本,背景等.有些CSS书籍也会对这些简单的属性进行大张旗鼓的介绍,而偏偏忽略了对一些难缠的属性讲解,有避重就轻的嫌疑.CSS中主要难以理解的属性包括盒型结 ...
- google开源的C++性能分析工具 - gperftools
gperftools是Google提供的一套工具,其中的一个功能是CPU profiler,用于分析程序性能,找到程序的性能瓶颈. 安装 gperftools:http://code.google.c ...
- N次剩余
$$求解x^n\equiv a(\%P),其中P是质数,0\leq x<P$$ 设$g$是$P$的原根 那么$g^0,g^1,...,g^{P-2}$和$1,2,...,P-1$是一一对应的. ...
- Angular.js VS. Ember.js:谁将成为Web开发的新宠?
这篇博文陈述的非常好,比较全面的剖析了Angular.js与Ember.js,下面的链接,供学习与参考: http://www.csdn.net/article/2013-09-09/2816880- ...
- chinaOS
从舆论上和政策规定上来推广操作系统,这对国产操作系统而言是好事,还是坏事? 从某种程度上来说,这是好事 运用行政的力量,率先在国家机关中普及国产操作系统确实是件好事,首先是确保了国家信息安全,其次则能 ...
- Shell脚本常用命令简介
格式化日期yyyy-mm-dd hh:mm:ss显示 date "+%Y-%m-%d %H:%M:%S" 将内容写入到新文件 echo "hello">a ...
- N - Picture - poj 1177(扫描线求周长)
题意:求周长的,把矩形先进行融合后的周长,包括内周长 分析:刚看的时候感觉会跟棘手,让人无从下手,不过学过扫描线之后相信就很简单了吧(扫描线的模板- -),还是不说了,下面是一精确图,可以拿来调试数据 ...
- html——基础样式篇(1)
格式化标签 <b>字体加粗标签 <i>字体斜体标签 <sub>下标标签 <sup>上标标签 <del>删除标签 //这在商品特价时常使用 a ...
- lesson1:threadlocal的使用demo及源码分析
本文中所使用的demo源码地址:https://github.com/mantuliu/javaAdvance 其中的类Lesson1ThreadLocal 本文为java晋级系列的第一讲,后续会陆续 ...
- 修改文件所有者 chown
将upload目录权限改为777,sudo chmod 777 upload,再测试上传功能成功.但这种修改权限的方法并不安全.故可以改upload目录的拥有者为www-data(即apache) ...