• python中异常的介绍


    每个异常都是一 些类的实例,这些实例可以被引发,并且可以用很多种方法进行捕捉,使得程序可以捉住错误并且对其进行处理

    >>> 1/0
    
    Traceback (most recent call last):
      File "<pyshell#0>", line 1, in <module>
        1/0
    ZeroDivisionError: integer division or modulo by zero

    异常处理

    捕捉异常可以使用try/except语句。

    >>> def inputnum():
        x=input('Enter the first number: ')
        y=input('Enter the first number: ')
        try:
            print x/y
        except ZeroDivisionError:
            print "The second number can't be zero"
    
            
    >>> inputnum()
    Enter the first number: 10
    Enter the first number: 0
    The second number can't be zero

    raise 触发异常

    >>> class Muff:
        muffled=False
        def calc(self,expr):
            try:
                return eval(expr)
            except ZeroDivisionError:
                if self.muffled:
                    print 'Division by zero is illegal'
                else:
                    raise
    
                
    >>> c=Muff()
    >>> c.calc(10/2)
    
    Traceback (most recent call last):
      File "<pyshell#33>", line 1, in <module>
        c.calc(10/2)
      File "<pyshell#31>", line 5, in calc
        return eval(expr)
    TypeError: eval() arg 1 must be a string or code object
    >>> c.calc('10/2')
    5
    >>> c.calc('1/0')
    
    Traceback (most recent call last):
      File "<pyshell#35>", line 1, in <module>
        c.calc('1/0')
      File "<pyshell#31>", line 5, in calc
        return eval(expr)
      File "<string>", line 1, in <module>
    ZeroDivisionError: integer division or modulo by zero
    >>> c.muffled=True
    >>> c.calc('1/0')
    Division by zero is illegal

    多种异常类型

    try:
        x=input('Enter the first number:')
        y=input('Enter the seconed number:')
        print x/y
    except ZeroDivisionError:
        print "The second number can't be zero!"
    except TypeError:
        print "That wasn't a number,was it?"

    同时 捕捉多个异常

    try:
        x=input('Enter the first number:')
        y=input('Enter the seconed number:')
        print x/y
    except(ZeroDivisionError,TypeError,NameError):
        print 'Your numbers were bogus...'

     捕捉对象

    try:
        x=input('Enter the first number:')
        y=input('Enter the seconed number:')
        print x/y
    except(ZeroDivisionError,TypeError),e:
        print e
    
        
    Enter the first number:1
    Enter the seconed number:0
    integer division or modulo by zero

     捕捉所有异常

    try:
        x=input('Enter the first number:')
        y=input('Enter the seconed number:')
        print x/y
    except:
        print 'something wrong happened...'
    
        
    Enter the first number:
    something wrong happened...
  • 相关阅读:
    论文翻译:2003_Analysis of Two-Channel Generalized Sidelobe Canceller (GSC) With Post-Filtering
    论文翻译:2019_Speech Bandwidth Extension With WaveNet
    回声消除中的LMS和NLMS算法与MATLAB实现
    电脑组装之硬件选择
    回声消除应用平台
    OpenCV图像处理以及人脸识别
    回声消除中的自适应滤波算法综述
    市场车载音响麦克风摆放以及降噪解决方案
    车载环境下的噪声分析
    NLTK自然语言处理库
  • 原文地址:https://www.cnblogs.com/nsds/p/6515216.html
Copyright © 2020-2023  润新知