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("******")

     



  • 相关阅读:
    Android开发过程中的坑及解决方法收录(二)
    【转】Android开发之数据库SQL
    Android开发过程中的坑及解决方法收录(一)
    Android开发之基于监听的事件处理
    Android开发——导入github安卓项目源码
    Android开发之常见事件响应方式
    Android studio导入eclipse项目(亲测)
    Android开发——diglog cancel与dismiss方法区别
    Android开发——Toast知识
    android 点击返回键 以及 加载activity 生命周期 记录。。。,一目了然
  • 原文地址:https://www.cnblogs.com/golinux/p/10812237.html
Copyright © 2011-2022 走看看