Python基础23 异常处理、软件目录结构规范

一、异常处理

1、错误与异常

错误分为语法错误和逻辑错误。
异常是程序运行时发生错误的信号。在python中,错误触发的异常如下:
在这里插入图片描述

2、常见异常种类

在python中,不同异常可以用不同的类型去标识。不同的类对象标识不同的异常,一个异常标识一种错误。

AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError 语法错误
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

3、基本语法

异常是由程序的错误触发的。为了不让程序遇到错误,产生崩溃。需要做异常处理。

# try:
#     被检测的代码块
# except 异常类型:
#     try中一旦检测到异常,就执行这个位置的逻辑

例:

try:
    age = input(">>>")
    age = int(age)
except ValueError as va:
    print(va)
'''
>>>a
invalid literal for int() with base 10: 'a'
'''

4、多分支

因为一个异常类只能处理一种特定的异常,所以可以用多分支解决该问题。

try:
    age = input(">>>")
    age = int(age)
except KeyError as va: # 相当于if多分支语句中的elif
    print(va)
except ValueError as va: # 相当于if多分支语句中的elif
    print(va)
except Exception as va: # 相当于if多分支语句中的else
    print(va)

5、异常的其他结构

s1 = input(">>")
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
   print(e)
else:
    print('try内代码块没有异常则执行我')
finally:
    print('无论异常与否,都会执行该模块')

6、主动触发异常

try:
    raise TypeError("类型错误!")
except Exception as ex:
    print(ex)
    
'''
类型错误!
'''

7、自定义异常

class CExc(BaseException):
    def __init__(self,msg):
        self.msg = msg
# raise CExc("错误!")
print(CExc("错误!"))  # 错误!

8、断言

print('=================')
assert 1 == 2

print('------------------')

注:assert语句错误,会触发异常AssertionError,后续代码不再执行。

二、软件目录结构规范

规范化能更好的控制程序结构,让程序具有更高的可读性、可维护性。
目录结构实例如下:假如项目名称为dataman
dataman/
|----bin
|  |----start.py(启动模块)
|----conf(配置文件目录)
|  |----settings.py
|----db(数据库目录)
|  |----admin
|  |----school
|  |----student
|  |----teacher
|----lib(公共类库目录)
|  |----commons.py
|----log(日志目录)
|----core(主程序目录)
|----README(程序说明书)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值