python中的其他语句

Else statement in python

我是一个Python初学者。以下代码的两个快速问题:

  • 为什么我不能执行print("printed valueError")
  • 为什么与print("no error occurred")的else语句不管我输入什么都会打印出来?
  • 代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    def int_checker(a,b):
    try:
        if isinstance(a,int) and isinstance(b,int):
            print('both integers')
        else:
            raise ValueError
            print('printed ValueError')
    except:
        print('error occurred')
    else:
        print('no error occurred')
    finally:
        print('no error occurred')

    print(int_checker(1,2))
    print(int_checker(1,'a')


    为什么我不能执行print("printed valueError")

    这仅仅是因为代码执行将出现raise ValueError异常,并直接跳到except部分。要解决此问题,您可以切换线路:

    1
    2
    3
    else:
        print('printed ValueError')
        raise ValueError

    为什么与print("no error occurred")的else语句不管我输入什么都会打印出来?

    您正在对try, catch, else, finally使用语法。它们的顺序是:

  • try块中运行代码。
  • 发生错误了吗?
    • 正确:在catch块中执行代码
    • 假:执行else块中的代码
  • finally块中运行代码。(这将永远发生!)
  • 从上面看,无论执行过程中是否有错误,代码形式finally语句每次都会运行。在大多数情况下,例如,当您在try块中读取cx1〔10〕文件时,会从中读取该文件并突然发生错误。在这种情况下,您需要close文件并清除引用。该代码将转到finally块。

    关于so的类似问题:else的目的和异常处理的最终目的


    "finally"块中的任何内容都将每次打印。

    尝试此操作:从"Try"块中删除"Else",并将以下内容添加到"Except"块中:

    1
    2
    print('printed ValueError')
    raise ValueError

    "except"之后的"else"仅在未发生错误时运行