异常处理

异常处理的相关理论

异常处理
    什么是异常?
        程序在运行过程中出现了不可预知的错误
        并且该错误没有对应的处理机制,那么就会以异常的形式表现出来
        造成的影响就是整个程序无法再正常运行
    
    异常的结构
        1.异常的类型:NAMEERROR
        2.异常的信息:name 'fdsdfsdf' is not defined
        3.异常的位置:Traceback (most recent call last):
                  File "D:/python脱产10期视频/day29/01 异常处理.py", line 1, in <module>
                    fdsdfsdf
        
    异常的种类
        分为两大类
            1.语法错误
                是你程序立刻就能解决的,这种错误是不能被容忍的
                语法上的错误 发现之后应该立刻解决
            
            2.逻辑错误
                这种错是可以被容忍的 因为一眼看不出来
                针对逻辑上的错误  可以采用异常处理机制进行捕获
                
        常见的错误类型
            NAMERROR     名字错误
            SyntaxError  语法错误
            KeyError     键不存在
            ValueError   值错误
            IndexError   索引错误
            
                
        如何避免
            异常处理    
                在你认为可能会出现bug的代码块上方try一下:注意try内部的代码块越少越好
    
            try:
                可能出错的代码
            except 出错的类型 as e:  # 将报错信息赋值给变量e
                出错之后的处理机制

代码演示:

# res = {'name':''}
# print(res['password'])
# print(res.get('password','fdjdsfk'))

# int('sdjajsd')
# l = [1,2,3,4]
# # l[111]



# try:
#     name
#     l = [1,2,3]
#     l[111]
#     d = {'name':'jason'}
#     d['password']
# except NameError:
#     print('NameError')
# except IndexError:
#     print('indexerror')
# except KeyError:
#     print('keyerror')
"""
错误发生之后  会立刻停止代码的运行
执行except语句 比对错误类型
"""

# try:
#     # name
#     # l = [1,2,3]
#     # l[111]
#     d = {'name':'jason'}
#     d['password']
#     # Exception
# except BaseException:  # 万能异常  所有的异常类型都被捕获
#     print('老子天下无敌')





# try:
#     # name
#     l = [1,2,3]
#     l[111]
#     # d = {'name':'jason'}
#     # d['password']
# except Exception:  # 万能异常  所有的异常类型都被捕获
#     print('老子天下无敌')
# else:
#     print('被检测的代码没有任何的异常发生 才会走else')
# finally:
#     print('无论被检测的代码有没有异常发生 都会在代码运行完毕之后执行我')


# 主动抛异常
# if 'egon' == 'DSB':
#     pass
# else:
#     raise TypeError('尽说大实话')
# 关键字raise就是主动抛出异常


# l = [1,2,3]
# assert len(l) < 0  # 断言  预言
# 猜某个数据的状态 猜对了 不影响代码执行 正常走
# 猜错了  直接报错

# 自定义异常
#9 自定义异常
class MyError(BaseException):
     def __init__(self,msg):
         super().__init__()
         self.msg=msg
     def __str__(self):
         return '<dfsdf%ssdfsdaf>' %self.msg

raise MyError('我自己定义的异常')  # 主动抛出异常其实就是将异常类的对象打印出来,会走__str__方法
原文地址:https://www.cnblogs.com/qinsungui921112/p/11361569.html