python---异常

本文介绍了Python中的异常处理,包括如何捕获异常、异常捕获的完整语法以及如何使用`raise`主动抛出异常。强调了在主程序中捕获异常的重要性,以及在用户输入密码场景下,如何根据输入长度决定是否抛出异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常

捕获异常

如果对代码执行的结果不确定,可以使用try来捕获异常

try:
	尝试执行的代码
except:
	出现错误的处理
try:
	num = int(input("请输入数字:"))
except:
	print("请输入正确的数字")

在执行完except里的内容后,会继续执行下面的内容。上一段代码会报错:pep8:do not use bare except 我也不知道该怎么解决

我们可以根据错误类型提示来编写代码不同情况下的异常,但是因为不可能预判所有错误类型,所以需要使用Exception这个特殊的类。

Exception是python为异常提供的一个关键的类。

except Exception as 常量:
	print("未知错误%s"  % 常量)
try:
    num = int(input("请输入数字:"))
    result = 8/num
    print(result)

except ZeroDivisionError:
    print("除零错误")

# except ValueError:
#     print("请出入正确的整数")

except Exception as unknow_error:
    print("未知错误%s" % unknow_error)

else:
	print("尝试成功")

finally:
	print("无论是否成功都会执行")

print("这里也会被执行")
异常捕获的完整语法
try:
	尝试执行的代码
except 错误类型1:
	对应的代码处理
except 错误类型2:
	对应的代码处理
except (错误类型3, 错误类型4):
	对应的代码处理
except Excepttion as result:
	print(result)
else:
	没有异常才会执行的代码
finally:
	无论是否异常,都会执行的代码

异常具有传递性
当函数或者方法执行时出现异常,会将异常传递给函数或方法的调用一方,如果传递到主程序,仍然没有异常处理,程序才会被终止。因此只需要在主程序中增加异常捕获,保证代码的整洁。

def demo1():
	return int(input("请输入一个整数")
def demo2():
	return demo1()

try:
	print(demo2())
except ValueError:
	print("请输入正确的整数:")
except Exception as result:
	print("未知错误%s" % result)
抛出raise异常

可以根据需求主动抛出异常。比如提示用户输入密码,如果长度少于8,抛出异常。

如果希望抛出异常:
1、创建一个Exception的对象
2、使用raise关键字抛出异常对象

需求:
定义函数,提示用户输入密码
如果用户输入长度<8,抛出异常
如果用户输入长度>=8,,返回输入密码

def input_password():
    password = input("请输入密码:")
    if len(password) >= 8:
        return password
    # 主动抛出异常
    # 1>创建异常对象
    error = Exception("密码长度不够")
    # 2>主动抛出异常
    raise error


try:
    print(input_password())
except Exception as result:
    print(result)

执行结果:

请输入密码:a
密码长度不够

input_password()是一个函数,可以使用print直接打印,异常会传递到主程序,我们可以将"密码长度不够"字符串作为参数,使用raise抛出,在主程序中可以捕获

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值