• Python基础Task3:异常处理


    Python基础Task3:异常处理

    1.try-except语句

    try:
        检测范围
    except Exception[as reason]:
        出现异常后的处理代码
    

    【例子】

    try:
        f = open('test.txt')
        print(f.read())
        f.close()
    except OSError:
        print('打开文件出错')
    

    try 语句按照如下方式工作:

    首先,执行try子句(在关键字try和关键字except之间的语句)
    如果没有异常发生,忽略except子句,try子句执行后结束。
    如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码。
    如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
    一个try语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
    使用多个except代码块时,必须坚持对其规范排序,要从最具针对性的异常到最通用的异常。

    【例子】

    try:
        int("abc")
        s = 1 + '1'
        f = open('test.txt')
        print(f.read())
        f.close()
    except OSError as error:
        print('打开文件出错
    原因是:' + str(error))
    except TypeError as error:
        print('类型出错
    原因是:' + str(error))
    except ValueError as error:
        print('数值出错
    原因是:' + str(error))
    
    # 数值出错
    # 原因是:invalid literal for int() with base 10: 'abc'
    

    2. try - except - finally 语句

    try:
        检测范围
    except Exception[as reason]:
        出现异常后的处理代码
    finally:
        无论如何都会被执行的代码
    

    如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally子句执行后被抛出。

    3.try - except - else 语句

    如果在try子句执行时没有发生异常,Python将执行else语句后的语句。

    try:
        检测范围
    except:
        出现异常后的处理代码
    else:
        如果没有异常执行这块代码
    

    注意:else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误。

    4.raise语句

    Python 使用raise语句抛出一个指定的异常。

    【例子】

    try:
        raise NameError('HiThere')
    except NameError:
        print('An exception flew by!')
        
     #An exception flew by!
    

    3.练习题:猜数字

    题目描述:

    电脑产生一个零到100之间的随机数字,然后让用户来猜,如果用户猜的数字比这个数字大,提示太大,否则提示太小,当用户正好猜中电脑会提示,"恭喜你猜到了这个数是......"。在用户每次猜测之前程序会输出用户是第几次猜测,如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"。

    (尝试使用try catch异常处理结构对输入情况进行处理)

    获取随机数采用random模块。

    import random
    count=1
    x=random.randint(0,100)
    print("猜测一个0到100之间的整数:
    ")
    while True:
        try:
            m = input("这是第%d次猜,请输入一个整数:
    " % count)
            m1=int(m)
            if m1>x:
                print("太大")
                count +=1
                #continue
    
            elif m1<x:
                print("太小")
                count += 1
                #continue
            else:
                print("恭喜你猜对了!")
                count=1
                x=random.randint(0,100)
                print("猜测一个0到100之间的整数:
    ")
        except ValueError as error:
            print("输入的不是数字" + str(error))
            print("请输入一个0到100之间的整数")
    
  • 相关阅读:
    浅谈常量
    运算符
    TTL与CMOS门电路
    16位CRC校验_Delphi
    DXP快捷键记录(红色为经常用到的)
    论EFMS模拟量部分采集电路的修改
    稳压二极管应用电路_转载
    TVS二极管
    TryEnterCriticalSection___Delphi
    很好用的一个翻译插件
  • 原文地址:https://www.cnblogs.com/dingdingdongs/p/13375706.html
Copyright © 2020-2023  润新知