欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python异常处理

程序员文章站 2022-04-17 11:30:40
...

异常处理

"""
try:
    可能发生错误的语句
except 异常类型:
    如果try语句发生错误,那么执行此处语句
"""

try:
    print(1/0)
# 捕获异常
except ZeroDivisionError:
    # 如果捕获到了异常,那么就执行下边的语句
    print("除数不能为0!")

print("hello")

try:
    L = [1,2,3,4]
    print(L[6])
except IndexError:
    print("超出索引范围!")

Name = "jack"
try:
    print(name)
except NameError:
    print("变量不存在!")

try:
    main()
except BaseException:
    pass

try:
    print(1/0)
except:
	print("除数不能为零!")

"""
try:
    有可能发生错误的语句
except 异常信息:
    异常之后要执行的代码
else:
    没有发生异常的时候执行下边的语句
"""

try:
    print(1/1)
except BaseException:
    print("除数不能为0!")
else:
    print("hello")

"""
try:
    有可能发生错误的语句
except 异常信息:
    异常之后要执行的代码
else:
    没有发生异常的时候执行下边的语句
finally:
    不管是否有异常,都会执行这里的语句
"""

try:
    print(1/1)
except BaseException:
    print("除数不能为0!")
finally:
    print("无论如何都会执行我!")

异常处理的特殊情况

  • python中的错误其实就是class,所有的错误都继承baseexception,所以我们在捕获的时候,它捕获了该类型的错误,并且它还把子类一网打尽

    • try:
          print(1/0)
      except BaseException as e:
          print("异常1")
      except ZeroDivisionError as e:
          print("异常2")
      
  • 有些错误无法捕获
    比如说内存错误,如果我们想开辟一块新的内存空间,那就必须先释放一部分内存

  • 跨越多层调用:

    • def func1(num):
          print(1/num)
      def func2(num):
          func1(num)
      def main():
          func2(0)
      try:
          main()
      except ZeroDivisionError as e:
          print("*****")
      #Main调用了func2,func2调用了func1,但是出现错误的是func1,这个时候只要main捕获到了就可以处理
      
相关标签: 异常处理