异常处理:

python在遇到问题时会自动引发异常,也可以用raise故意引发异常,异常种类必须是已有的

>>> raise IOError('This is a test.')
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
raise IOError('This is a test.')
OSError: This is a test.

IOError:打不开相应文件

ZeroDivisionError:除以0

SyntaxError:语法错误

捕获异常:

try/expect

def get_age():
while True:
try:
n = int(input('How old are you?'))
return n
except ValueError:
print('please enter an integer value.')
>>> get_age()
How old are you?a
please enter an integer value.
How old are you?-2
-2

捕获多种异常:把多个异常种类括起来就好了

def convert_to_int1(s,base):
try:
return int(s,base)
except (ValueError, TypeError):
return 'error'
>>> convert_to_int1(100,5)
'error'
>>> convert_to_int1(5,100)
'error'
>>> convert_to_int1('',5)
25

分别处理不同的异常:用多个except

def convert_to_int2(s,base):
try:
return int(s,base)
except ValueError:
return 'value error'
except TypeError:
return 'type error'
>>> convert_to_int2(100,5)
'type error'
>>> convert_to_int2('',1)
'value error'

捕获所有异常:except后面不加异常类型

def convert_to_int3(s,base):
try:
return int(s,base)
except:
return 'error'
>>> convert_to_int3('',5)
25

清理操作:finally 无论是否引发异常都会执行

def invert(x):
try:
return 1/x
except:
return 'error'
finally:
print('invert(%s) done' %x)
>>> invert(2)
invert(2) done
0.5
>>> invert(0)
invert(0) done
'error'

with 尽早执行清理操作

下面代码将在for循环后立刻关闭文件

def add_linenum(fname):
num = 1
with open(fname,'r') as f:
for line in f:
print('%04d %s' %(num,line), end ='')
num = num+1
>>> add_linenum('story.txt')
0001 Story
0002
0003 Mary had a litte lamb,
0004 and then she had some more.HaHaHa!!

【python】入门学习(八)的更多相关文章

  1. Python Tutorial 学习(八)--Errors and Exceptions

    Python Tutorial 学习(八)--Errors and Exceptions恢复 Errors and Exceptions 错误与异常 此前,我们还没有开始着眼于错误信息.不过如果你是一 ...

  2. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  3. python入门学习:8.类

    python入门学习:8.类 关键点:类 8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类 8.1 创建和使用类   面向对象编程是最有效的软件编写方法之一.在面向对象编程中,你编写 ...

  4. python入门学习:7.函数

    python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数   使用关键字def ...

  5. python入门学习:6.用户输入和while循环

    python入门学习:6.用户输入和while循环 关键点:输入.while循环 6.1 函数input()工作原理6.2 while循环简介6.3 使用while循环处理字典和列表 6.1 函数in ...

  6. python入门学习:5.字典

    python入门学习:5.字典 关键点:字典 5.1 使用字典5.2 遍历字典5.3 嵌套 5.1 使用字典   在python中字典是一系列键-值对.每个键都和一个值关联,你可以使用键来访问与之相关 ...

  7. python入门学习:4.if语句

    python入门学习:4.if语句 关键点:判断 4.1 一个简单的测试4.2 条件测试4.3 if语句 4.1 一个简单的测试   if语句基本格式如下,注意不要漏了冒号 1if 条件 :2     ...

  8. python入门学习:3.操作列表

    python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表   循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...

  9. python入门学习:2.列表简介

    python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么   列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  10. Python入门学习:1.变量和简单的数据类型

    python入门学习:1.变量和简单的数据类型 关键点:变量.字符串.数字 1.1 变量的命名和使用1.2 字符串1.3 数字1.4 注释 1.1 变量的命名和使用   变量,顾名思义是一个可变的量, ...

随机推荐

  1. Linq→join中指定多个条件

    还是习惯先撸一段SQL * FROM User_Pic P AND P.Guid = R.UserPicGuid ORDER BY PicSize DESC 然后发现Linq中的join不能多条件.. ...

  2. 终端改变host的类型,还原

  3. golang的json操作

    package main import ( "encoding/json" "fmt" "os" ) type ConfigStruct s ...

  4. ZOJ 3711 Give Me Your Hand

    Give Me Your Hand Time Limit: 2 Seconds      Memory Limit: 131072 KB      Special Judge BellyWhite a ...

  5. C++之通用队列模版

    功能:在qtcreator上用模版的方式实现队列数据格式存储多样化. 模版实现的两种方式: 1.模版的实现直接在头文件里声明并定义,别的类通过#include"*.h"进行包含,则 ...

  6. css 设计总结

    一.背景图片的拉伸: backgroud-size 说明:  http://www.w3school.com.cn/cssref/pr_background-size.asp 效果:  http:// ...

  7. mysql 在linux 修改账号密码

    1.root用户登录到mysql数据库代码示例:/usr/local/mysql/bin/mysql -u root -p (输入密码进入mysql)2.进入mysql,输入:代码示例:use mys ...

  8. jsp+servlet

  9. 客户端安全-csrf

    1.需求 理解并掌握CSRF攻击和防御 2.csrf的产生 盗个图说明(http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html) B伪 ...

  10. transition第一次没有效果

    原因很简单因为一开始没有设定要改变的样式的初始值 例如你要改的是top:-50; 那一开始就要设top:0; 不然第一次不会有动画效果移动