zoukankan      html  css  js  c++  java
  • Python异常处理

    1、try...except

    我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError,例如:

    a=5
    b=0
    c=a/b
    print(c)
    
    #以上执行结果抛出异常:
    Traceback (most recent call last):
      File "D:/test/Pythonlianxi/day8/异常处理.py", line 25, in <module>
        c=a/b
    ZeroDivisionError: division by zero

    程序因为ZeroDivisionError而中断了,语句print 没有运行。为了处理异常,我们使用try...except,更改代码:

    a=10
    b=0
    try:
        c=a/b
        print (c)
    except ZeroDivisionError as e:   #这个e代表错误信息,如果上面的两行代码出现了ZeroDivisionError这个错
      print(e)
      print('除数不能为0')

    运行结果:

      division by zero
      除数不能为0

    这样程序就不会因为异常而中断,从而print('除数不能为0')语句正常执行,我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except

    捕获所有异常:如果不知道代码会发生什么样的异常,但是也想把异常捕捉到该怎么处理呢,可以使用Exception,这样代码就不会因为异常而终止运行,例如:

    a=10
    b=0
    try:
        c=a/b
        print (c)
    except Exception as e:#这个e代表错误信息,如果上面的两行代码出错
        print(e)
        print('出错了')

    运行结果:

      division by zero
      出错了

    2、try ....except...else 语句

    当没有异常发生时,else中的语句将会被执行,else语句不是必须写的,也可以不写。例如:

    a=10
    b=5
    try:
        c=a/b
        # print (c)
    except Exception as e:#这个e代表错误信息,如果上面的两行代码出错
        print(e)
        print('出错了')
    else:# 没有出错,也不是必须写的
        print('并没有出错')  # 这个是没有异常的时候走
        print(c)
    运行结果:

      并没有出错
      2.0

    3、try ...finally

    无论异常是否发生,在程序结束前,finally中的语句都会被执行。例如:

    出错了:

    a=10
    b=0
    try:
        c=a/b
    except Exception as e:#这个e代表错误信息,如果上面的两行代码出错
        print(e)
        print('出错了')
    else:# 没有出错,也不是必须写的
        print('并没有出错')  # 这个是没有异常的时候走
        print(c)
    finally:#不管出错或者没有出错都会执行它,也不是必须写的。
        print('我是finally')

    运行结果:

      division by zero
      出错了
      我是finally

    没有出错:

    a=10
    b=5
    try:
        c=a/b
    except Exception as e:#这个e代表错误信息,如果上面的两行代码出错
        print(e)
        print('出错了')
    else:# 没有出错,也不是必须写的
        print('并没有出错')  # 这个是没有异常的时候走
        print(c)
    finally:#不管出错或者没有出错都会执行它,也不是必须写的。
        print('我是finally')

    运行结果:

      并没有出错
      2.0
      我是finally

  • 相关阅读:
    Silverlight 置于悬浮层之下 背景透明的方法
    做流媒体服务器需要什么(FMS)
    Silverlight WebClient 上传实现
    Silverlight WCF 初尝小结
    自动判断页面上的图片是否加载成功,不成功替换为默认图片
    HTTP PUSH技术原理,结合ASP.NET实现以及评述
    AJAX 请求队列实现
    关于COOKIES需要注意的一点
    Silverlight WCF 上传实现
    Silverlight 上传 大文件分块上传
  • 原文地址:https://www.cnblogs.com/xiehong/p/9056652.html
Copyright © 2011-2022 走看看