zoukankan      html  css  js  c++  java
  • 【python】入门学习(八)

    异常处理:

    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('100',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('100',1)
    'value error'

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

    def convert_to_int3(s,base):
        try:
            return int(s,base)
        except:
            return 'error'
    >>> convert_to_int3('100',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!!
  • 相关阅读:
    exit() _exit() 函数区别
    Linux-进程间通信(五): 网络套接字
    Linux-进程间通信(六): 记录锁
    Linux-进程间通信(N): 各种IPC的使用场景
    SQL EXISTS
    日志格式化
    logminer实战之生产环境写入数据字典,dg环境查询拷贝日志,测试环境进行挖掘,输出结果
    awr脚本使用dump导出导入
    logminer使用测试库进行挖掘分析,10.2.0.5
    10.2.0.5环境dg测试logminer挖掘日志分析
  • 原文地址:https://www.cnblogs.com/dplearning/p/3954168.html
Copyright © 2011-2022 走看看