zoukankan      html  css  js  c++  java
  • 异常处理,三层结构

    异常处理  *****
    三层结构 ***

    什么是异常:
    异常是一种信号,是一种不同于常规情况的信号 如果没有正确处理
    最后的结果报错,同时中断程序的运行
    目的:
    学习异常待处理的目的是为了提高程序的健壮性
    异常的结果就是报错
    异常的分类:
    1.语法检测异常 最低级的错误 不需要学处理 语法基础掌握牢固即可
    2.运行时异常
    已经通过了语法检测,开始解释执行代码了,但是逻辑上有问题
    强调:***
    解释器在执行程序时 首先要做的就是语法检测 如果发现问题 则一行代码也不会执行
    异常的组成
    追踪信息:用于定位错误发生的位置
    发生错误的文件路径以及行号
    具体发生错误的代码
    异常的类型:具体的原因


    处理异常的基本语法
    try
    #这里放的是有可能出现问题的代码
    #try 的好处是即使发生了异常 也不会导致程序中断
    except
    #放的是具体处理这个异常的代码

    多个except 可以针对不同的异常类型 具体来处理
    一旦try中有代码发生了异常 剩余代码都不执行
    意味着 不管有多少except都只执行一个
    万能异常 Exception(不推荐使用)
    BaseException 也是万能异常
    如果后期一定要使用万能异常 一定要打印异常信息
    否则 程序不会出现任何异常 但是也不会达到你的预期效果


    except Exception as e
    print(e)

    try:
    except TypeERRor:
    finally: #无论是否发生异常 都会执行它
    用于清理除了解释器之外的资源


    需要掌握的语法:
    1.try except except.....
    2. try except finally


    断言
    一句非常肯定的话
    assert 判断 如果True 继续执行
    否则不会执行下面代码 并且抛出异常
    assert 仅仅帮你简化了if代码
    使用方法
    assert 条件表达式

    主动抛出异常
    语法: raise可以是一个异常类 也可以是某个异常类的对象
    场景:作为功能的提供者 要提供一个功能给外界使用
    当使用者没有按照正常要求来使用功能时 导致功能无法正常运行时 就应该抛出异常来告诉使用者
    功能提供方 抛出异常
    功能使用方 处理异常



    li=[]
    if li:
    print('处理这个列表')
    else:
    raise ValueError('你的值有问题')



    为什么自定义异常类
    当内置异常类型 无法准确描述错误原因时 就需要自定义
    让你的类 继承任何的异常类最好是BaseException

    # import os
    # class MyRead:
    #     def __init__(self,path):
    #         if not os.path.exists(path):
    #             raise FileExistsError('你的路径不正确 小码农')
    #         self.file=open(path,'rt',encoding='utf-8')
    #
    #     def read(self):
    #         return self.file.read()
    #
    #
    # r=MyRead('xxxxxx')
    # print(r.read)
    自定义异常

    1.在明确知道错误原因时,尽可能不使用异常处理,直接使用判断
    2.避免使用万能异常,会使得你的程序即不出错,也不不正常执行,如果非要用,一定记得打印异常信息
    3.常用的语法是第一种
    # class MyException(BaseException):
    #     def __init__(self,msg,abc):
    #         super().__init__(msg)
    #         self.abc=abc
    #
    #     pass
    #
    # class MyException2(BaseException):
    # #     pass
    # #
    # #
    # # def func():
    # #     pwd1='123'
    # #     pwd2='1234'
    # #     if pwd1==pwd2:
    # #         print('注册成功!')
    # #     else:
    # #         raise MyException('两次密码不相同','测试参数')
    # # # func()
    # # try:
    # #     func()
    # # except BaseException as e:
    # #     print(e.abc)
    View Code



    软件开发的
    1.需求分析
    2.项目设计
    三层机构就是用于项目设计的
    简单的说 就是指导你 什么样的代码要放在什么样的文件里
    前提:需要明确 所有应用程序 本质上都是与用户发生交互 从而操作数据

    三层结构把程序分为
    1.用户界面层
    负责接受数据和展示数据
    2.业务逻辑层(接口层)
    负责一系列的逻辑判断
    将数据组装成一定格式
    3.数据处理层
    负责将数据存储到指定位置
    与从指定位置读取数据 交给业务逻辑层


  • 相关阅读:
    Redis系统管理
    Redis简介和安装
    在Azure中搭建Ghost博客并绑定自定义域名和HTTPS
    ML:单变量线性回归(Linear Regression With One Variable)
    PRML Chapter4
    Windows+Idea安装Hadoop开发环境
    包装类
    认识J2SE
    Spark基本原理
    SQL总结
  • 原文地址:https://www.cnblogs.com/gengbinjia/p/10418398.html
Copyright © 2011-2022 走看看