1 异常的概念

2 异常的捕获

"""
什么是异常:程序出现错误,bug,程序被中断
如果出现异常,不对异常处理,则程序中断,后面的程序不再执行异常的捕获:try...except
在有可能出现异常的程序加上try
"""
try: # 捕获异常num = int(input("输入一个整数:"))print(num)
except Exception: # 当出现异常时执行下面的语句print("请输入一个整数!!!!")print("66666666666")

"""
Exception: 是常规异常的父类(基类),如果不知道是哪一种类型的异常,可以归为Exception
"""
try:num = int(input("输入一个整数:"))result = 10 / numprint(result)
except ZeroDivisionError: # 捕获不同类型的异常print("除数不能为0")
except ValueError:print("请输入正确的整数!")print("66666666666666")


"""
try--except--else
try--except--else--finallytry: 捕获异常,后面跟可能出现异常的程序
except: 当出现异常时,执行的语句
else: 如果没有出现异常,则执行的语句
finally: 不管有没有异常,都一定会执行的程序,一般用于比如关闭数据库,关闭文件等。
"""try:num = int(input("输入一个整数:"))result = 10 / num
except ZeroDivisionError: # 捕获不同类型的异常print("除数不能为0")
except ValueError:print("请输入正确的整数!")
else: # 程序没有出现异常才会执行print("程序没有出现异常,结果是:",result)
finally: # 不管程序有没有异常,后面的语句都会被执行,一般用于关闭文件,关闭数据库等这些必要的操作。print("不管程序有没有异常,这句话一定会执行")print("66666666666666")
3 异常的传递

"""
一个函数出现了异常,它会传递给它的调用者,如果没有异常处理,则在主程序运行时会报错
"""
def demo1():return int(input("输入一个整数:"))def demo2():print(demo1())# 只需要在主程序中加上异常处理即可
try:demo2()
except Exception as result:print("发生了未知错误:",result) # 当输入 45.3 发生了未知错误: invalid literal for int() with base 10: '45.3'
4 抛出raise异常


# 1、使用raise主动抛出异常,主程序中需要对这个异常进行捕获
def input_password():psd = input("请输入不少于6位数的密码:")if len(psd) >= 6:return psdprint("主动抛出异常")ex = Exception("密码长度不能小于6位数!")raise extry:print(input_password())
except Exception as result:print("发生了错误:",result)# 2、自定义一个异常类
# 像ValueError,ZeroDivisionError这些都是系统提供的异常类型,也可以自己定义一个异常类型
class PasswordTooShort(Exception): # 继承Exceptionpasstry:password = input("设置密码(至少6位数)")if len(password) < 6:raise PasswordTooShortprint("设置密码成功!")
except PasswordTooShort:print("密码至少需要6位数")