zoukankan      html  css  js  c++  java
  • 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...
  • 相关阅读:
    常用Linux命令
    SQL必知必会-笔记
    【ubuntu】install openbox+tint2+bmenu on ubuntu12.04.4
    【ruby】安装Ruby
    【ruby】快速安装gems的方法
    【sinatra】设置默认的端口
    【sinatra】修改默认ip绑定
    【sinatra】结合Padrino framework
    【sinatra】安装测试
    【rails3教材】博客构建过程2
  • 原文地址:https://www.cnblogs.com/nsds/p/6515216.html
Copyright © 2011-2022 走看看