语法错误与定位
异常捕获、异常处理
自定义异常
错误
语法错误:编写代码进行的报错【SyntaxError: invalid syntax】
例:
逻辑错误:语法没有问题
系统错误:操作系统引起的
异常
程序执行过程中出险的未知错误
语法和逻辑是正常的
程序业务逻辑不完善引起的成语漏洞
常见的异常类型:除零类型【ZeroDivisionError: division by zero】,名称异常【NameError: name 'numw' is not defined】,索引异常【列表】【IndexError: list index out of range】,键异常【KeyError: 'yuyu'】,值异常【ValueError: invalid literal for int() with base 10: '12eee'】,属性异常等等
异常与错误的区别
异常可以被捕获和处理
错误一般是编码错误,逻辑错误,系统错误
异常/错误处理流程
检测到错误->引发异常->捕获异常操作
如果是拼写、配置等引起的错误,根据错误信息排查错误出现的位置进行解决
如果是程序设计不完善引起的漏洞、根据漏洞的情况进行设计处理漏洞的逻辑
处理异常:
2-----------------------------------------------------------------------------------
try:
print(33/0)
except:
print("this is 异常")
1-----------------------------------------------------------------------------------
try:
print(33/0)
except ZeroDivisionError as e:
print(e)
print("this is 异常") --->
3-----------------------------------------------------------------------------------
try:
list = [1,3,4,5]
print(list[8])
print(33 / 0)
except Exception as e:
print(e)
4-----------------------------------------------------------------------------------
try:
list = [1,3,4,5]
print(list[8])
print(33 / 0)
except Exception as e:
print(e)
finally:
print(888888)
无论是否有异常,finally都会执行。
5----------------------------------------------------------------------------------------------
try:
list = [1,3,4,5]
print(list[8])
print(33 / 0)
except Exception as e:
print("有异常的时候执行")
else:
print("没有异常的时候执行")
finally:
print(888888)
6-----------------------------------------------------------------------------------------------
def demo(num):
if num > 10:
raise ValueError(f"错误值:{num}")
else:
print(num)
demo(19)
7-----------------------------------------------------------------------------------------------
自定义异常
class MyException(Exception):
def __init__(self,msg):
print(f"这是一个异常:{msg}")
def demo(num):
if num > 10:
raise MyException(f"错误值:{num}")
else:
print(num)
demo(19)