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

     



  • 相关阅读:
    python3 TypeError: a bytes-like object is required, not 'str'
    Centos 安装Python Scrapy PhantomJS
    Linux alias
    Vim vimrc配置
    Windows下 Python Selenium PhantomJS 抓取网页并截图
    Linux sort
    Linux RSync 搭建
    SSH隧道 访问内网机
    笔记《鸟哥的Linux私房菜》7 Linux档案与目录管理
    Tornado 错误 "Global name 'memoryview' is not defined"
  • 原文地址:https://www.cnblogs.com/golinux/p/10812237.html
Copyright © 2011-2022 走看看