异常
捕获异常
如果对代码执行的结果不确定,可以使用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抛出,在主程序中可以捕获。
本文介绍了Python中的异常处理,包括如何捕获异常、异常捕获的完整语法以及如何使用`raise`主动抛出异常。强调了在主程序中捕获异常的重要性,以及在用户输入密码场景下,如何根据输入长度决定是否抛出异常。
9988

被折叠的 条评论
为什么被折叠?



