如何通过Python中的多个异常退出

问题描述 投票:0回答:1
def directories():
    print("Creating STRaitRazor directories...")
    try:
        os.chdir("C:\\")
        os.mkdir("STRaitRazor")
        os.chdir("STRaitRazor")
        os.mkdir("Analysis")
        os.chdir("Analysis")
        os.mkdir("config")
        os.mkdir("fastq")
        os.chdir("..")
        os.mkdir("bin")
        os.chdir("bin")
        print("STRaitRazor directories successfully created")
        Sevenzip()
    except:
        print("Could not create directories. Do directories already exist?")
        response = input("Y/N\n")
        if response == "Y" or response == "y":
            Sevenzip()
        elif response == "N" or response == "n":
            print("Unexpected exception occurred, aborting...")
            time.sleep(5)
            sys.exit(1)

def Sevenzip():
    os.chdir("C:\\STRaitRazor\\bin")
    try:
        print("Downloading 7zip into C:\\STRaitRazor\\bin...")
        url = "https://www.7-zip.org/a/7z1900.exe"
        urllib.request.urlretrieve(url, "7zip.exe")
        path = "C:/STRaitRazor/bin/"
        subprocess.call("7zip.exe /S /D=%s"%path)
        print("7zip downloaded")
        gitdownload()
    except:
        print("Could not download 7-zip. Check your internet connection and admin permissions.")
        response = input("Press ENTER to exit...")
        sys.exit(1)

我在遇到异常后实际上能够退出程序时遇到问题。我的代码示例在上面。基本上,我正在做的事情是将函数嵌套在其他函数中,因为该程序需要按照特定的顺序执行多项操作,因此我从顶部开始,检查函数是否正确执行,如果可以,请继续执行转到下一个功能。我的问题是例外。每次引发异常时,我告诉它时程序都不会退出。相反,它将引发应有的异常,然后上升到一个级别并引发该异常,依此类推,以此类推,直到最终退出。我到底在做什么错?是我嵌套函数的方式吗?无论在哪里写入“ sys.exit(1)”行,都有一种方法可以迫使程序退出?

python exception exit
1个回答
0
投票

尝试使用raise

示例

try:
    with open('/usr/fakepath2whatever') as f:
        pass
except:
    raise
//do other stuff if case of no errors

输出:

FileNotFoundError: [Errno 2] No such file or directory: /usr/fakepath2whatever

这给了我一个FileNotFoundError,但是您可以随时使用raise引发异常。该文档是here

© www.soinside.com 2019 - 2024. All rights reserved.