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

    一.try-except-else语句块

    '''
    try:
        语句t
    except 错误码 as e:
        语句1
    except 错误码 as e:
        语句2
    ...
    else:
        语句e
    
    注意:else语句可以没有
    
    作用:用来检测try语句块中的错误,except获取到错误信息并处理
    
    执行逻辑:
    1.try语句块出现了错误,且except匹配到,则执行相应的处理代码
    2.try语句块出现了错误,且except没有匹配到,则抛给上一层的try
    3.没有错误,执行else
    '''

    常有三种形式

    第一种

    # 所有可能出现的具体错误都用except接收
    try:
        # print(int("aaa"))
        print(3/0)
    except ValueError as e:
        print("int 无法将非数字字符串转换为整数")
    except ZeroDivisionError as e:
        print("0 不能作为除数")
    else:
        print("everything is ok!")
    
    输出结果
    0 不能作为除数

    第二种

    # 使用一个except接收可能出现的错误
    try:
        # print(int("aaa"))
        print(3/0)
    except:     # 匹配所有的错误,但是无法确定是哪一种
        print("代码有错误")
    
    输出结果
    代码有错误

    第三种

    # 将可能出现的错误都列出来放到except后面的括号里
    try:
        print(int("aaa"))
    except (NameError, ValueError, ZeroDivisionError):      # 将多种错误放到一个except中匹配
        print("代码有debug")
    
    输出结果
    代码有debug

    二.try-except-finally语句块

    '''
    try...except...finally
    try:
        语句t
    except 错误码 as e:
        语句1
    except 错误码 as e:
        语句2
    ...
    finally:
        语句n
    
    
    作用:无论语句t是否有错误都会执行最后的语句n
    
    可用于关闭一些文件流f.close()
    '''
    try:
        print(int("aaa"))
    except NameError as e:
        print("name error")
    except ValueError as e:
        print("value error")
    finally:
        print("this coomand must be excute..")
    
    print("***")
    
    输出结果
    value error
    this coomand must be excute..
    ***

    三.断言assert

    # 断言
    # 可用于调式代码,看出哪里有问题
    
    def func(a, b):
        assert (b != 0), "b 不能为0"
        return a / b
    
    
    print(func(12, 0))
    
    输出结果如下
    Traceback (most recent call last):
      File "D:/pythonPro/异常处理/断言.py", line 9, in <module>
        print(func(12, 0))
      File "D:/pythonPro/异常处理/断言.py", line 5, in func
        assert (b != 0), "b 不能为0"
    AssertionError: b 不能为0

    四.猜数字游戏加入异常处理

    # 猜数字加入异常处理
    import random
    
    
    random_num = random.randint(1,100)
    while True:
        try:
            guess_num = int(input("pls input a number(1~100):"))  
        except ValueError as e:
            print("you must input a number,can not be other chracters.")
            continue
        else:
            pass
    
        if guess_num > random_num:
            print("too big.")
            continue
        elif guess_num < random_num:
            print("too small.")
            continue
        else:
            print("sucess")
            break
    print("******")

     



  • 相关阅读:
    合唱队形2 洛谷U5874
    AC日记——石子归并 codevs 1048
    AC日记——舒适的路线 codevs 1001 (并查集+乱搞)
    AC日记——导弹拦截 洛谷 P1020 (dp+模拟)
    常见模板(欧拉筛素数,最小生成树,快排,并查集,单源最短路)
    AC日记——信息传递 洛谷 P2661 (tarjan求环)
    AC日记——逃出克隆岛 (bfs)
    数字对 (长乐一中模拟赛day2T2)
    改造二叉树 (长乐一中模拟赛day2T1)
    AC日记——热浪 codevs 1557 (最短路模板题)
  • 原文地址:https://www.cnblogs.com/golinux/p/10812237.html
Copyright © 2011-2022 走看看