异常处理,三层结构

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

什么是异常:
异常是一种信号,是一种不同于常规情况的信号 如果没有正确处理
最后的结果报错,同时中断程序的运行
目的:
学习异常待处理的目的是为了提高程序的健壮性
异常的结果就是报错
异常的分类:
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.数据处理层
负责将数据存储到指定位置
与从指定位置读取数据 交给业务逻辑层


posted @ 2019-02-22 14:56  777ijBGly-  阅读(269)  评论(0编辑  收藏  举报