Python学习日志第八篇(1023)

异常处理

引发异常

在代码的任何地方都可使用raise语句故意引发异常:

>>> raise IOError('This is a test!')
Traceback (most recent call last):
    File "<pyshell#6>", line 1, in <module> raise IOError('This is a test!')
IOError: This is a test!
捕获异常

ex:

def get_age():
    while Ture:
        try: 
            n = int(input('How old are you? '))
            return n
        except ValueError:
            print('Please enter an integer value.')

处理多种异常:

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

捕获所有异常:

def convert_to_int3(s, base):
    try: 
        return int(s, base)
    except:
        return 'error'
with 语句

为了确保即便发生异常,也将尽早执行清理操作。

num = 1
f = open(fname)
for line in f:
    print('%04d %s' % (num, line), end = ' ')
    num = num + 1

这里不知道文件对象f将在何时关闭。f通常在for循环结束后关闭,但不知道准确的时间。
为确保不再需要的文件尽早关闭,可使用with语句:

num = 1
with open(fname, 'r') as f:
    for line in f:
        print('%04d %s' % (num, line), end = ' ')
        num = num + 1

使用with语句时,将在for循环结束后立即执行文件对象清理操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,743评论 0 38
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 10,261评论 0 11
  • 【新声记.读狼】 生不易,不是吗? 为财苦,为食忙,苟活于世,在尘埃里零落,在虚空里消亡…… 不...
    北岸之声阅读 1,748评论 0 0
  • 记住因能力不强,被人忽视的屈辱感。同时理智的清楚,非一日之功。尊敬他,超越他。
    WillYang01阅读 681评论 0 0
  • 立夏从杨亚飞家出来,刚打算上车,却见张艳艳的妈妈就站在大门的旁边,正在往自己这边看。 立夏赶紧过去打招呼,“婶子,...
    冬妮娅阅读 2,515评论 0 0