语法错误与定位
异常捕获、异常处理
自定义异常
错误
语法错误:编写代码进行的报错【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)