直播软件源码,异常偶有发生我们该如何处理?
初识异常
异常与异常处理:
- 异常既错误
- 异常会导致程序崩溃并停止运行
- 异常处理可以捕获到异常,将异常部位的程序进行处理使得直播软件源码继续正常运行
异常处理的结构由 try-except 代码块组成
try: 代码块 #被try关键字检查并保护的代码 except <异常类型> # try关键字检查的代码可能出现的异常的种类 代码块 # try关键字检查的代码出现异常后执行的代码
def upper(str_data): new_str = str_data.upper() return new_str res = upper('hero') print(res)
调用 upper 函数时,传入字符串,函数可以正常执行,如果传入数字则会报错
res_01 = upper(111) print(res_01) res_02 = upper('hello') print(res_02)
错误代码后面的代码无论正确与否一旦出现异常,程序就会终止,这个时候就需要对这段可能会出错的代码进行异常处理,确保直播软件源码能正常运行。
def upper(str_data): new_str = '' try: new_str = str_data.upper() except: print('程序执行出现问题') return new_str
对函数中可能出现异常的代码进行了异常处理,程序可以正常执行。
捕获异常
可以对try-except代码中的异常进行捕获,再不确定是那种异常的情况下可以使用异常的基类Exception进行捕获
def divid(x, y): res = 0 try: res = x / y except Exception as e: print(e) return res res = divid(1, 2) print(res) res_01 = divid(1, 0) print(res_01) res_02 = divid(10, 2) print(res_02)
不使用try-except异常处理,执行函数,查看控制台打印出的具体异常
def divid(x, y): res = x / y return res
可以看出控制塔打印的异常为 “ZeroDivisionError: division by zero”,如果可以确定具体的异常类型,也可以在except关键字后捕获具体的异常
def divid(x, y): res = 0 try: res = x / y except ZeroDivisionError as e: print(e) return res
在对列表和字符串进行索引操作时还会出现索引超出范围异常,使用这个异常看能否不会divid函数中的异常
def divid(x, y): res = 0 try: res = x / y except IndexError as e: print(e) return res
直播软件源码运行还是出错,这是因为异常类型不匹配,所以没有捕获到,在进行异常处理时如果可以确定具体的异常类型就使用具体的异常类型,如果不确定就是用基类异常,使用的异常不匹配程序仍然不能正确执行
捕获多个异常
可以通过连续添加except代码块的方式捕获多个异常。
try: # 代码块 except Eexception1 as e1: # 代码块 except EXception2 as e2: # 代码块 except EXception3 as e3: # 代码块
当 except 代码块有多个的时候,当异常类型匹配后,就不会继续往下捕获,也可以使用元组将所有待捕获的异常存起来。
try: # 代码块 except (Eexception1, Exception2, Exception3) as e: # 代码块
def divid(x, y): res = 0 try: res = x / y except (IndexError, NameError, ZeroDivisionError) as e: print(e) return res
或者
def divid(x, y): res = 0 try: res = x / y except IndexError as e: print(e) except NameError as e2: print(e2) except ZeroDivisionError as e3: print(e3) return res
以上就是直播软件源码,异常偶有发生我们该如何处理?, 更多内容欢迎关注之后的文章
标签:偶有,代码,except,try,直播,res,print,异常,源码 From: https://www.cnblogs.com/yunbaomengnan/p/18076728