python中的异常处理方法

目录

 1.什么是异常?

3.异常的分类

4.异常的类型(有很多 不一一列举)

异常处理实操

 基本语法结构

异常处理了解操作


 1.什么是异常?


    代码运行出错之后就是异常 异常会导致程序立刻停止 
  是我们以后在编程过程中需要极力避免的情况(异常的外号>>>:bug)
 
2.异常信息的组成部分

name

Traceback (most recent call last):
  File "C:/me/JetBrains/pythonProject/异常处理/异常处理.py", line 188, in <module>
    name
NameError: name 'name' is not defined


   1.line关键字所在的一行
      用于提示你代码哪一行出错了 点击前面的蓝色字体可以直接定位
    '''如果报错的信息很长 一般最后一个才是'''
  2.NameError错误的类型
      代码的报错也可以分为很多类型
  3.name 'name' is not defined
      具体的报错原因(就是解决报错的答案)
  


3.异常的分类


    1.语法异常
      不被允许的 如果出现了必须立刻改正
        eg:if分支结构都不会写...
            if 1, while :,...
  2.逻辑异常
      可以允许的 如果出现了尽快修改即可
        eg:代码动态获取到了一个字符串类型的数据但是调用了列表的内置方法
            name = 'yietong'
                    print(name.append())
     改bug其实就是在重新梳理你的思路


4.异常的类型(有很多 不一一列举)


    # print(name)  # NameError     名字错误
  # l1 = [11, 22, 33]
  # print(l1[100])  # IndexError 索引错误
  # d = {'name':'jason'}
  # print(d['age'])  # KeyError  键错误
  # int('jason')  # ValueError   值错误

异常处理实操

'''有时候针对可能会出错的代码 也可以自己提前写好处理措施'''
    正常情况下代码出错 肯定是直接导致程序停止
  但是也可以自己通过代码来处理 从而避免程序的停止

 基本语法结构


    try:
    可能会出错的代码
  except 错误的类型1 as e:  # e指代的就是错误的提示信息
    针对性的处理措施
  except 错误的类型2 as e:  # e指代的就是错误的提示信息
    针对性的处理措施
  except 错误的类型3 as e:  # e指代的就是错误的提示信息
    针对性的处理措施

  ...

# 错误类型
    很多时候可能自己都不知道会报什么类型的错误
  '''万能异常:常见的报错都可以照单全收'''
  try:
    可能会出错的代码
  except Exception as e:  
    统一的处理措施


##############################################
异常处理使用尊则
    1.被检测的代码越少越好
  2.能尽量少用就尽量少用

##############################################

异常处理了解操作

1.结合else使用 

当try检测的代码没有发生异常 正常运行完毕之后执行else的子代码

try:
        可能会出错的代码
except Exception as e:  
        统一的处理措施
else:
        可能会出错的代码没有出错 最后走else子代码

2.结合finally使用 
无论try检测的代码是否有异常 最后都会执行finally子代码
   
try:
    name
    except Exception as e:
    print(e)
 finally:
 无论try检测的代码是否有异常 最后都会执行finally子代码

3.全部整合到一起使用

try:
        name
        except Exception as e:
        print(e)
else:
        print('没报错 好极了')
finally:
        print('管你错不错 都执行') 


4.断言(了解中的了解)    

name = 'yietong'    
assert isinstance(name,str)
5.主动报错(需要掌握)

raise NameError('不爽 就要作!!!') 
'''由于是主动报错 所以可以非常明确的知道错误的类型'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值