《python基础教程》笔记之 异常

  • 按自己的方式出错

使用raise语句引发一个异常,可以使用一个类(应该是Exception的子类)或者实例参数来作为raise的引发对象。使用类时,程序会自动创建实例,如

>>> raise Exception(‘hyperdrive overload‘)

Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    raise Exception(‘hyperdrive overload‘)
Exception: hyperdrive overload

  • 捕捉异常

可以使用try/except实现捕捉异常,如

try:
    x = input(":")
    y = input(":")
    print x/y
except ZeroDivisionError:
    print "hello exception"
#结果如下:
>>>
:10
:2
5
>>>
:1
:0
hello exception

再次引发异常,如

class MuffledCalculator:
    muffled = False
    def calc(self, expr):
        try:
            return eval(expr)
        except ZeroDivisionError:
            if self.muffled : #如果屏蔽标志开启,则处理异常
                print "Division by zero is illegal"
            else:#如果屏蔽标志未开启,则再次引发异常
                raise
#结果如下:
>>> clc = MuffledCalculator()
>>> clc.calc(‘10/2‘)
5
>>> clc.calc(‘10/0‘) #没有屏蔽

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    clc.calc(‘10/0‘) #没有屏蔽
  File "E:\work\Code\python\test.py", line 137, in calc
    return eval(expr)
  File "<string>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> clc.muffled = True
>>> clc.calc(‘10/0‘) #有屏蔽
Division by zero is illegal

except后面不带参数可以捕捉所有的异常, 可以通过在ty/except后加一个except语句或者在except语句中用元组将多个异常类型列出来实现捕捉多个异常,如下:

try:
    x = input(":")
    y = input(":")
    print x/y
except (ZeroDivisionError, TypeError), e:
    print e
#结果如下
>>>
:10
:0
integer division or modulo by zero

在ty/except后加一个else语句可以在没有引发异常的情况下执行一些语句,如

while True:
    try:
        x = input(":")
        y = input(":")
        print x/y
    except Exception,e:
        print e
    else :
        print "Ah,.... it successed"
        break
#结果
>>>
:10
:0
integer division or modulo by zero
:10
:2
5
Ah,.... it successed

finally子句 -- finally子句肯定会被执行,不管try子句中是否发生异常,主要用于关闭文件或者网络套接字。

时间: 2024-11-06 04:49:39

《python基础教程》笔记之 异常的相关文章

python基础教程笔记——画幅好画(详解)

今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个txt文件,然后打开处理一下得到数据,因为我从这个url路径没有获取到数据,所以直接写了一点数据在程序里. urlopen比较简单,以后写爬虫也会经常用到,所以这里就不讲了,只单独讲讲reportlab模块. #encoding:utf8 from reportlab.graphics.shapes

python 基础教程 笔记 一

第一章 python 基础知识 1.1 数字和数学表达式 1.2 python 2.x 和python 3.x print的区别 1.3 python 2.x 和 python 3.x input 的区别 1.4 数学函数 1.5 input 和 raw_input 区别 第二章 列表和元组 第三章 使用字符串 1.1 数字和表达式 Python 默认的除法:整数/整数,无论是否整除都得到整数,不整除的截取小时部分 1 / 2 0 如果想要Python 执行普通的除法,可以之用浮点数来实现也可以

Python基础教程笔记 第二章

本章的名字虽然叫列表和元组,但是本章讲的最多的是列表,元祖指讲了很少的一部分.因为元组和列表很多方面都是一样的. 列表和元组的区别:列表可以被修改,元祖不可以被修改. python包含的6种内建序列:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象. 内建函数返回的是元组,因为元组是不可以被修改的. 列表的形式是[] ,元素之间通过逗号分隔. 序列(例如列表和元组)和映射(例如字典)是两类主要的容器.序列中的每个元素都有自己编号,而映射中的每个元素则有一个名字(也称为

python基础教程总结7——异常

1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类.常见的Python异常有: 异常 描述 NameError 尝试访问一个没有申明的变量 ZeroDivisionError 除数为0 SyntaxError 语法错误 IndexError 索引超出序列范围 KeyError 请求一个不存在的字典关键字 IOError 输入输出错误(比如你要读的文件不存在) AttributeError 尝试访问未知的对象属性 ValueError 传给函数的参数类型不正确,比如给in

Python基础教程笔记十四:字典(Dictionary)

Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: d = {key1 : value1, key2 : value2 } 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一. >>>dict = {'a': 1, 'b': 2, 'b': '3'}; >>> dict

python基础教程笔记 第1单元 &amp;&amp; 第2单元

1.http://docs.python.org/dev/3.0/whatsnew/3.0.htmlpython-announce-listpython-help2.交互式编译器3.非整数除法 .1.>>> from__future__import divisionSyntaxError: invalid syntax.2.Linux -Qnew4.整数除法 // 就算是浮点数也会执行整除取余 2.75%0.5幂运算符 ** (pow(base,times[mod]))幂运算符比取反等级

Python基础教程笔记——使用字符串

使用字符串 Table of Contents 1 基本字符串操作 2 字符串格式化:精简版 2.1 用字符串格式化操作符 2.2 用string的Template格式化字符串 3 字符串格式化:完整版 3.1 转换说明符 3.2 简单转换 3.3 字段宽度和精度 3.4 符号,对齐和 0 填充 4 字符串方法 4.1 find 4.2 join 4.3 lower 4.4 replace 4.5 split 4.6 strip 4.7 translate 1 基本字符串操作 说明:字符串也是序

Python基础教程笔记——第1章

1.8 函数 pow(x,y) x^y abs(x)          取数的绝对值 round(x)   会把浮点数四舍五入为最接近的整数 floor(x)     向下取整的函数,但是需要先import  math模块 1.9 模块 用import导入模块来扩展Python的功能 (1)import 模块    然后用法:模块.函数 (2)from 模块 import 函数     然后用法:函数 (3)使用变量来赋值,然后使用函数,,,如:foo=math.floor()   foo(12

Python基础教程笔记——第2章:列表和元组

python shell 里重复上一次的命令:Alt+p 2.3 列表:Python的苦力 (1)list函数 (2)列表赋值,不蹦蹦为一个元素不存在的位置赋值 (3)删除元素,del name[1] (4)分片赋值,name[2:]=list('ar') 列表方法:对象.方法(参数) (1)a.append(6)   在列表末尾添加新的对象 (2)a.count("dh")   统计元素在列表中出现的次数 (3)a.extend(b)   可以在列表的末尾一次性追加多个值 (4)a.

Python基础教程笔记 第一章

/  表示整除,当导入_future_模块中的version时,/ 表示正常的的除法, 此时可用//表示整除,不论数字是整型还是浮点型,都可以用//表示整除. ** 表示幂次方  例如 2**3   表示2的3次方  结果为8 ** 运算符的优先级比负号 - 的运算符优先级高,所以 -3**2 = -9    (-3)**2 = 9 Pow(3,2)函数也表示幂次方的计算,此函数表示3的2次方,结果为9 输入使用input函数,input(“please input a number:”)