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

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

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

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值