python学习笔记(十五)异常处理

python学习笔记(十五)异常处理

相关概念

错误:程序运行之前的语法问题。
如:关键字、缩进对齐、符号不成对等
异常:程序运行过程中出现的问题。
如:除数等于0、下标越界、访问不存在的对象属性等

异常处理

说明

异常处理就是在程序出现异常时进行人为的干预
异常处理可以认为是一种特殊的流程控制语句
异常处理可以提高代码的健壮性

语法

try:
    print('正常代码')
    a = 10 / 0
    print('执行结束')
except Exception as e:
  	# Exception是所有异常的基类
    # 捕获异常,然后进行异常的处理
    print('出现异常', e)

print('OVER')

多异常处理


# 每种异常都有特定的处理方案,可以进行单独处理
try:
    print('正在执行')
    # print(a)
    print(10/0)
    print('正常结束')
except (NameError, ZeroDivisionError) as e:
    # 分组处理异常
    print('NameError or ZeroDivisionError', e)
# 注意 不可以将基类写在最前面  当前面获取之后后面就不会进行获取了
except Exception as e:
    print('其他异常', e)
    
print('OVER')    

完整异常结构

try:
    print('正常执行')
    print(10/0)
    print('正常结束')
except Exception as e:
    print('出现异常', e)
else:
    print('else语句:没有异常时会执行')
finally:
    print('finally语句:无论有无异常都执行')

print('OVER')

手动抛出异常

try:
    print('正常执行')
    # 手动抛出异常
    raise Exception('手动抛出的异常')
    print('正常结束')
except Exception as e:
    print('出现异常', e)

print('OVER')

异常嵌套

print('我要学习,什么也阻止不了学习的脚步')

try:
    print('我准备学习语文')
    raise Exception('语文书丢了')
    print('成功学习语文')
except Exception as e:
    print('语文学习失败:', e)
    try:
        print('于是我准备学习数学')
        raise Exception('数学题太难了!!!')
        print('乘成功学习语文')
    except Exception as e:
        print('数学学习失败:', e)
        print('于是决定去打游戏')
        print('打游戏真是快乐啊')

print('今天又是充满希望的一天啊!!!')

自定义异常类

import time

# 自定义异常类
class MyException(Exception):
    def __init__(self, msg):
        self.msg = msg

	def __str__(self):
		return self.msg

	# 封装异常处理方法
    def deal(self):
        print('异常处理中...')
        time.sleep(2)
        print('异常处理结束')
        
try:
    print('正常执行')
    # raise Exception('手动抛出异常')
    raise MyException('自定义异常')
    print('执行结束')      
except MyException as e:    
    # 自定义的异常类要放在前面捕获
    print('自定义异常:', e)
    # 调用专门的函数处理对应的异常
    e.deal()
except Exception as e:
 	print('系统异常:', e)

print('OVER')
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值