python学习之——020异常处理

联系代码:

#需求,当程序遇到问题时,不让程序结束,而越过错误继续向下执行

#try....except....else
'''
格式:try:
    语句t
except 错误嘛码 as e:
    语句1
except 错误嘛码 as e:
    语句2
    ...
else
    语句n
注意:语句else可有可无
'''

try:
  #  print(3/0)
  #  print(num)
  print(3/1)
except ZeroDivisionError as e:
    print("被除数为0")
except NameError as e:
    print("没有该变量")
else:
    print("代码没问题")

print("*************")

#使用except而不使用任何错误类型
try:
    print(4/0)
except:
    print("程序出现异常")
print("*************")
#使用except带走多种异常
try:
    print(5/0)
except (NameError,ZeroDivisionError):
    print("出现NameError或ZeroDivisionError")

print("*************")
#特殊
#1.错误其实是class,所有的错误都继承自BaseException,所以在捕获的时候,它捕获该类型的错误,还把子类一网打尽
try:
    print(5/0)
except BaseException as e:
    print("异常1")
except ZeroDivisionError as e:
    print("异常2")
print("*************")


#2 跨越多层调用,main调用 func2,func2调用 func1,func1出现异常
def func1(num):
    print(1/num)
def func2(num):
    func1(num)
def main():
    func2(0)
try:
    main()
except ZeroDivisionError as e:
    print("异常3")
print("*************")

#try....except....finally
'''
格式:try:
    语句t
except 错误嘛码 as e:
    语句1
except 错误嘛码 as e:
    语句2
    ...
finally
    语句n
作用:语句t是否有错误,都要执行finally
'''

try:
    print(1/0)
except NameError as e:
    print("为0")
except ZeroDivisionError as e:
    print("为0")
finally:
    print("必须执行")
print("*************")


#断言
def func(num,div):

    assert (div != 0),"div 不能为0"
    return num / div

print(func(10,2))



运行结果:

D:\pycharm\python\venv\Scripts\python.exe D:/pycharm/python/020异常处理.py
3.0
代码没问题
*************
程序出现异常
*************
出现NameError或ZeroDivisionError
*************
异常1
*************
异常3
*************
为0
必须执行
*************
5.0

Process finished with exit code 0
 

你可能感兴趣的:(python学习之——020异常处理)