python_异常处理(try except)

1,异常捕获

异常捕获的字段为python解释报错的最后一行的第一个单词。使用try方法,程序报错时,可以使用except方法匹配报错的异常关键字,继续except下方定义的代码,从而保证代码可以正常运行,保证代码的稳定性。

# 定义一个计算器
def compute():
    num = int(input("请输入被除的值:"))
    result = 8 / num
    print(result)

# 测试方法,输入的数字为0 程序会出现报错 捕获报错异常
try:
    print(compute())
except ZeroDivisionError:  # ZeroDivisionError 为解释器报错时 最后一行的第一个单词 可以被解释器捕获
    print("0不能充当分母,请重新输入")  

2,整套异常处理的流程

# 定义一个计算器
def compute():
    num = int(input("请输入被除的值:"))
    result = 8 / num
    return result

# 测试方法,输入的数字为0 程序会出现报错 捕获报错异常
try:
    print(compute())
except ZeroDivisionError:  # ZeroDivisionError 为解释器报错时 最后一行的第一个单词 可以被解释器捕获
    print("0不能充当分母,请重新输入")
except ValueError:  # ValueError 为解释器另外一种异常错误,匹配到该异常,执行该except下方的代码
    print("输入的值错误,请重新输入")
except (ZeroDivisionError,ValueError): # 对多个异常进行处理。
    pass
else:  # 无异常时,执行
    pass
finally:  # 有无异常,都会执行的代码
    print("*********")

3, 自定义异常

案例:

密码输入长度匹配,长度必须大于8, 小于 10。否则输出“密码长度不正确”

def passwd():
    passwd_tmp = input("请输入密码,长度必须大于8位,小于13位:")
    if len(passwd_tmp) > 8:
        if len(passwd_tmp) < 13:
            return passwd_tmp
    print("密码长度不对")
    ex = Exception("密码长度不正确,请重新输入")  # 定义ex变量,保存异常输出提示
    raise ex  # raise方法跑出变量ex保存的异常输入提示

print(passwd())

如果长度不符合,异常输入如下:

 C:/Users/yc/PycharmProjects/yc-study/对象/异常处理.py
请输入密码,长度必须大于8位,小于13位:1
密码长度不对
Traceback (most recent call last):
  File "C:\Users\yc\PycharmProjects\yc-study\对象\异常处理.py", line 34, in <module>
    print(passwd())
  File "C:\Users\yc\PycharmProjects\yc-study\对象\异常处理.py", line 32, in passwd
    raise ex  # raise方法抛出变量ex保存的异常输入提示
Exception: 密码长度不正确,请重新输入

Process finished with exit code 1

 

posted @ 2022-01-10 23:06  小菜鸟起飞ing  阅读(741)  评论(0)    收藏  举报