捕获多种异常练习

捕获多种异常

下面存在三种异常:ValueError、KeyboardInterrupt 和其他异常,分别捕获并输出相应的提示语句

当用户输入123以外的字符时出现ValueError异常,这时提示用户输入数字1-3;当用户在输入数字后Ctrl+C时出现KeyboardInterrupt异常,输出nCtrl + C,操作已中断!;当出现其他异常时输出Something Error!

# 02 - 捕获多种异常.py

banner = '''-----------------------------------
预测年龄脚本:
1. 预测年龄
2. 其他
3. 其他
...
-----------------------------------
'''

print(banner)

choice = input("Please input the number: ")
choice = int(choice)

if choice !=1:
    print("好好学习...")
    exit()
try:
    age = input("Please input your age: ")
    print(f"The next year your name: {int(age) + 1}")

except ValueError:
    print("Please input a number!")

except KeyboardInterrupt:
    print("\nCtrl + C,操作已中断!")

except:
    print("\nSomething Error!")

如下图,输入emt和Ctrl+C都会捕获异常并输出提示语句,只有输入数字才会正常执行:

捕获多种异常练习_第1张图片

处理异常

  • else 子句:在try 范围中没有异常被检测到时,执行else 子句。在else 范围中的任何代码运行前,try 范围中的所有代码必须完全成功。
  • finally 子句:finally 子句是无论异常是否发生,是否捕捉,都会执行的一段代码。比如获取用户的输入,写入文件,但是如果在获取数据过程中,发生了异常,就会导致整个脚本结束执行,文件也无法关闭了。为了解决这个问题,可以采用异常处理中的finally 子句,也就是说,无论语句是否正常执行,都需要关闭。

下面语句中,try和else搭配,只有当try成功执行,才会执行else中的语句,否则会捕获异常并输出信息,最后的finally中的语句,无论有没有异常都会执行。

# 03 - 处理异常.py

banner = '''-----------------------------------
预测年龄脚本:
1. 预测年龄
2. 其他
3. 其他
...
-----------------------------------
'''

print(banner)

choice = input("Please input the number: ")
choice = int(choice)

if choice != 1:
    print("好好学习...")
    exit()

try:
    age = input("Please input your age: ")
    age = int(age) 

except ValueError:
    print("Please input a number!")

except KeyboardInterrupt:
    print("\nCtrl + C,操作已中断!")

except:
    print("\nSomething Error!")

else:
    print(f"The next year your name: {age + 1}")

finally:
    print("脚本执行结束,祝你好运!")

如下图,该脚本执行后都会输出finally中的语句,只有当try成功执行,才会执行else中的语句,否则会捕获异常并输出信息:

捕获多种异常练习_第2张图片

你可能感兴趣的:(Python,网络安全,python,linux,开发语言)