前言:我们应该怎么捕获异常,捕获异常的方式有哪些,在项目中捕获异常一般怎么去使用?
1.异常现象
? ? ? ? 程序不再向下运行,而是向上返回。
2.异常处理
? ? ? ? 把向上返回的过程变成继续按流程向下走。(早发现,早治疗)
3.异常处理的目的
? ? ? ? 防止程序流程紊乱,按照既定的流程执行程序。
4.捕获异常的三种方式
第一种代码案例:
# 第一种方式 “指定捕获特定的异常”-->按需治病
try:
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
print(num1 / num2)
except ValueError:
print("必须输入整数")
except ZeroDivisionError:
print("第二个整数不能为0")
?第二种代码案例:
# 第二种方式 “包治百病”
try:
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
print(num1 / num2)
except: # or except Exception:
print("出错了")
?第三种代码案例:
# 第三种方式 文件操作
try:
打开文件
操作文件
except: # or except Exception
文件操作异常处理
finally:
关闭文件
5.在项目中是如何使用异常的
from bll import RestaurantController
from dtl import RestaurantModel
class RestaurantView:
def __init__(self):
self.__restaurantController = RestaurantController()
@staticmethod
def __display_menu():
print(1, "添加餐厅信息")
print(2, "查询餐厅信息")
print(3, "修改餐厅信息")
print(4, "删除餐厅信息")
def __select_menu(self):
num = input("请输入选项:")
if num == "1":
self.__input_restaurant()
elif num == "2":
self.__show_restaurant()
elif num == "3":
self.__modify_restaurant()
elif num == "4":
self.__delete_restaurant()
else:
print("输入错误,请重新输入!")
def __input_restaurant(self):
restaurant = RestaurantModel(
name=input("请输入餐厅名称:"),
rating=self.__get_number("请输入点评人数:"),
city=input("请输入所在城市:"),
avg_price=self.__get_float("请输入平均价格:")
)
self.__restaurantController.add_restaurant(restaurant)
def __show_restaurant(self):
for item in self.__restaurantController.list_restaurant:
print(item)
def __modify_restaurant(self):
restaurant = RestaurantModel(
name=input("请输入餐厅名称:"),
rating=self.__get_number("请输入点评人数:"),
city=input("请输入所在城市:"),
avg_price=self.__get_float("请输入平均价格:")
)
print("修改成功!") if self.__restaurantController.modifying_restaurant(restaurant) else print("修改失败!")
def __delete_restaurant(self):
restaurant_name = input("请输入要删除的餐厅名称:")
print("删除成功!") if self.__restaurantController.delete_restaurant(restaurant_name) else print("删除失败!")
@staticmethod
def __get_number(manager):
while True:
try:
number = int(input(manager))
return number
except:
print("输入错误,请重新输入!")
@staticmethod
def __get_float(manager):
while True:
try:
number = float(input(manager))
return number
except:
print("输入错误,请重新输入!")
def main(self):
while True:
self.__display_menu()
self.__select_menu()
?如上代码:我们使用了__get_number来捕获用户输入的信息是否为我们想得到的。