• Python随笔11


    异常:

      异常不是语法错误,异常是一个事件是一个错误,当程序遇到这个异常时,要么去处理它要么终止并退出。如果异常没有处理,Python会调用回溯(traceback一种错误信息)并终止执行。Exception是所有异常的基类,Python利用exception object来表示异常。处理异常是用try: except:语句来包裹可能会出现异常的代码块。

    try:
    #     可疑代码块
    # except Exception1:     单个try语句可以抛出多个异常,可以用多个except语句,也可以用一个except语句处理所有异常
    #         ........
    # except Exception2:     如果代码在try:块不产生异常,可以在else语句中执行,else语句不需要try:块的保护,else语句必须在except之后
    #         ........
    # else:
    #     ...........

      一个简单的例子:

    try:
        print(1/0)
    except ZeroDivisionError:
        print("被除数不能为0!")

      结果:

    被除数不能为0!

      这样就将一个错误处理掉了。

      再举一个例子:

    try:
        x  = int(input("除数:"))
        y = int(input("被除数"))
        print(x/y)
    except ZeroDivisionError:
        print("被除数为0")
    # 捕捉多个异常
    except (ValueError,TypeError) as e:
        print("被除数非整数")
        print(e)
    # 在try中可疑代码块无异常时执行
    else:
        print("结果正常运行")

      当我们输入的被除数为0、非整数、非int型数据时,会分别抛出不同的异常

      finally关键字:

      finally关键字总是放在最后,而且不管有没有异常总会被执行。同样也可以放在函数中。

      例子:

      

    while True:
        try:
            x = int(input("除数:"))
            y = int(input("被除数"))
            print(x / y)
        except Exception as e:
            print("错误信息为", e)
        else:
            print("计算正确")
            break
        finally:
            print("结束!")

      无论有没有异常,finally总会被执行

      

    def function1(x,y):
        try:
            result=x/y
        except Exception as e:
            print(e)
        else:
            print(result)
        finally:
            print("结束了")
    #
    print(function1(1,"x"))

      不管参数如何,finally语句总会被执行

      异常具有传递性,我们必须在可能发生异常的地方处理掉异常 

    def faulty():
        raise Exception("someting is wrong!")
    def ignore_exception():
        faulty()
    print(ignore_exception())

      比方我们在最开始有一个异常faulty(),没有去处理它,在ignore_exception()它也继续存在,一直到我们调用这个ignore_exception()函数还是存在

    Traceback (most recent call last):
      File "D:/PythonDemo/异常3--finally.py", line 40, in <module>
        print(ignore_exception())
      File "D:/PythonDemo/异常3--finally.py", line 32, in ignore_exception
        faulty()
      File "D:/PythonDemo/异常3--finally.py", line 30, in faulty
        raise Exception("someting is wrong!")
    Exception: someting is wrong!
  • 相关阅读:
    [Linux]常用命令之【tar/zip/unzip/gzip/gunzip】
    [Git]解决: error: unable to create file src/main/webapp/xxxxxx/xxxx: Filename too long
    [Git]解决:error: The following untracked working tree files would be removed by checkout:
    [Linux]命令行分类
    [数据库/MYSQL]#解决缺陷#设置Unique索引时:"[Err] 1071
    [Java EE]辨析: POJO(PO / DTO / VO) | BO/DO | DAO
    [Java]遍历枚举类型为List
    【Vue】在Vue项目中调试Vue源码——修改Vue项目引入的vue文件
    【Vue】Vue源码解读之Component组件注册
    【Vue】驼峰命名法和短横线命名法的转换以及Vue源码中对驼峰式和大写式查找的支持
  • 原文地址:https://www.cnblogs.com/bigbigtong/p/10247086.html
Copyright © 2020-2023  润新知