异常处理

Posted xp1315458571

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。

一、异常处理

1.什么是异常?

程序在运行过程中出现了不可预知的错误
并且该错误没有对应的处理机制,那么就会以异常的形式表现出来
造成的影响就是整个程序无法再正常运行

2.异常的结构:

          类型   信息   位置

3.异常的种类

1.语法错误

是你程序立刻就能解决的,这种错误是不能被容忍的

语法上的错误 发现之后应该立刻解决

2.逻辑错误

这种错是可以被容忍的 因为一眼看不出来
针对逻辑上的错误 可以采用异常处理机制进行捕获

常见的错误类型:
NAMERROR 名字错误
SyntaxError 语法错误
KeyError 键不存在
ValueError 值错误
IndexError 索引错误


4.常规异常处理

错误发生之后  会立刻停止代码的运行
执行except语句 比对错误类型
支持多个except
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)

5.万能异常处理

try:
    name
    l = [1,2,3]
    l[111]
    d = name:jason
    d[password]
except Exception:  # 万能异常  所有的异常类型都被捕获 Exception继承BaseExcept,这里也可以写他爸爸
    print(老子天下无敌)
else:
    print(被检测的代码没有任何的异常发生 才会走else)(咱也不知道有啥用)
finally:
    print(无论被检测的代码有没有异常发生 都会在代码运行完毕之后执行我)(打开文件后不管处不出错都关闭文件)

6.主动抛出异常

# 主动抛异常
if egon == DSB:
    pass
else:
    raise TypeError(尽说大实话)

7.断言

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

8.自定义异常

class MyError(BaseException):
     def __init__(self,msg):
         super().__init__()
         self.msg=msg
     def __str__(self):
         return <dfsdf%ssdfsdaf> %self.msg
#
raise MyError(我自己定义的异常)  # 主动抛出异常其实就是将异常类的对象打印出来,会走__str__方法
#异常信息:<dfsdf我自己定义的异常sdfsdaf>

 

以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章

java异常处理详解!!

Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )

Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )

异常处理,约束,MD5加密,日志处理

PHP异常处理

Java的异常处理语法