Python高级之异常(python系列23)

2023-12-15 14:32:11

前言:我们应该怎么捕获异常,捕获异常的方式有哪些,在项目中捕获异常一般怎么去使用?

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来捕获用户输入的信息是否为我们想得到的。

文章来源:https://blog.csdn.net/a12345dfsdf/article/details/135000789
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。