python基础知识12-异常

几个命令:

sudo apt install tree

tree 当前目录以树形结构展示出来.

tree a 查看a内的所有目录.也可以跟绝对路径.

a = input('请输入您的密码')

将用户输入保存.

1.异常

异常就是报错.

异常:NameError SyntaxError TypeError

异常本身就是类的实例,最大类是BaseException.

1.SystemExit:Python退出异常.

2.KeyboardInterrupt:键盘打断(Ctrl+C)

3.GeneratorExit:生成器退出

4.Exception:普通异常

错误回溯.跟着解释器输出.执行代码:报错行,报错原因.

2.异常处理

基本的try ... except...

try:

f = open('xxoo.py','r') #当xxoo.py不存在时 会打印

except:

print('发生了异常')

try:

x = 0

y = 1/x

except: #捕获异常.

print('发生了异常') #会打印.

200行代码,如果出错了,在第1行,第100行,第200行代码分别写个print('行数'),查看到多少行出错.

3.捕获具体的异常:

try:

a

except NameError:

print('name出错了')

except ZeroDivisionError: #可以叠加写

print('分母为0错误')

except Exception: #不知道具体的异常,所有代码异常的父类.一般都要加错误类,不要空着.

print('')

raise主动抛出异常

try:

raise TypeError('这是一个类型错误')

except NameError;

print('name出错了')

关于Exception及其子类的解释

代码中会出现的异常都是Exception的子类,因此在except中只需要在最后加上Exception即可.在抛出异常的过程中,会从上到下依次对比异常,找到之后就不会再往后查找.

4.更加丰富的结构

try:

x = 0

except Exception:

print('发生了普通的异常') #不打印

else:

print('没有发生异 常') #代码没错误时候执行,打印

finally:

print('怎么都会执行') #打印

if,while,for 后面可以接else

5.断言跟自定义异常类型

不使用断言:

if not False:

raise Exception('条件不满足')

使用断言:

assert True #不抛出异常

assert False #抛出异常

自定义异常类型:

class MyError(Exception): #Exception类的继承

pass

使用:

def func(name):

if name == 'My':

raise MyError('我错了'*10)

try:

print(func('My')) except MyError:

print('捕获到一只My')

 

try:

print(func('My')) except Exception as e: #将自定义的异常存在e当中.

print(e) #把自定义的异常打印出来

posted @ 2019-06-06 11:11  博立克  阅读(138)  评论(0编辑  收藏  举报