目录
try.....except 语句
try.....except...else 语句
try.....except...finally 语句
使用raise语句抛出异常
使用assert语句调试程序
try:
block1
except [ExceptionName [as alias]]:
block2
可能出错的代码放在 try 后,处理结果放在except语句块中,这样,当try语句块中的代码出现错误,就会执行except语句块中的代码。
def division():
num1 = int(input("请输入被除数:")) # 用户输入提示,并记录
num2 = int(input("请输入除数:"))
result = num1//num2 # 执行除法运算
print(result)
if __name__ == '__main__':
try:# 捕获异常
division()# 调用分苹果的函数
except ZeroDivisionError: # 处理异常
print("输入错误:除数不能为0")# 输出错误原因
请输入被除数:12
请输入除数:0
输入错误:除数不能为0
else 后语句用于指定 try 语句块中没有发现异常时要执行的语句块,如果有异常将不被执行。
def division():
num1 = int(input("请输入被除数:")) # 用户输入提示,并记录
num2 = int(input("请输入除数:"))
result = num1//num2 # 执行除法运算
print(result)
if __name__ == '__main__':
try: # 捕获异常
division() # 调用函数
except ZeroDivisionError: # 处理异常
print("\n出错了:除数不能为0!")
except ValueError as e: # 处理ValueError异常
print("输入错误:", e) # 输出错误原因
else: # 没有抛出异常时执行
print("程序执行完成……")
请输入被除数:45
请输入除数:0出错了:除数不能为0!
请输入被除数:45
请输入除数:6
7
程序执行完成……
finally代码块中的代码始终都会执行
def division():
num1 = int(input("请输入被除数:")) # 用户输入提示,并记录
num2 = int(input("请输入除数:"))
result = num1//num2 # 执行除法运算
print(result)
if __name__ == '__main__':
try: # 捕获异常
division() # 调用函数
except ZeroDivisionError as e: # 处理异常
print("\n出错了:除数不能为0!", e)
except ValueError : # 处理ValueError异常
print("输入错误:") # 输出错误原因
else: # 没有抛出异常时执行
print("程序执行完成……")
finally: # 无论是否抛出异常都执行
print("释放资源,并关闭")
请输入被除数:12
请输入除数:0出错了:除数不能为0! integer division or modulo by zero
释放资源,并关闭
raise [ExceptionName [(reason)]] ExceptionName [(reason)指定抛出的异常名称
def division():
num1 = int(input("请输入被除数:")) # 用户输入提示,并记录
num2 = int(input("请输入除数:"))
if num2 == 0:
raise ValueError("除数不能为0")
result = num1//num2 # 执行除法运算
print(result)
if __name__ == '__main__':
try: # 捕获异常
division() # 调用函数
except ZeroDivisionError: # 处理异常
print("\n出错了:除数不能为0!")
except ValueError as e: # 处理ValueError异常
print("输入错误:", e) # 输出错误原因
请输入被除数:12
请输入除数:0
输入错误: 除数不能为0
assert expression [,reason]
expression:条件表达式,如果为True,什么都不做;如果为False,则抛出AssertionError异常
reason:描述判断条件。
def division():
num1 = int(input("请输入被除数:")) # 用户输入提示,并记录
num2 = int(input("请输入除数:"))
assert num2 != 0, "除数不能为0" # 应用断言调试
result = num1//num2 # 执行除法运算
print(result)
if __name__ == '__main__':
division() # 调用函数
请输入被除数:14
请输入除数:0
Traceback (most recent call last):
File "E:/PyCharm project/hello.py", line 8, in
division() # 调用函数
File "E:/PyCharm project/hello.py", line 4, in division
assert num2 != 0, "除数不能为0" # 应用断言调试
AssertionError: 除数不能为0
通常,assert可以与异常处理语句结合使用
def division():
num1 = int(input("请输入被除数:")) # 用户输入提示,并记录
num2 = int(input("请输入除数:"))
assert num2 != 0, "除数不能为0" # 应用断言调试
result = num1//num2 # 执行除法运算
print(result)
if __name__ == '__main__':
try:
division() # 调用函数
except AssertionError as e: # 处理AssertionError异常
print("\n输入有误:", e)
请输入被除数:13
请输入除数:0输入有误: 除数不能为0