2020-11-29

一.异常及其处理

异常简介:

    在程序运行的过程中会不可避免地出现一些错误,导致程序不继续运行下去

    异常后面的代码无法运行,示例如下

print("hello")

print(a)

print("world")

# hello

# NameError: name 'a' is not defined


异常处理:

        程序运行的时候出现异常的目的并不是让我们的程序直接终止 ,      

         python程序希望在运行出现异常的时候,我们编写相应的代码进行处理   

        因此产生了: try语句等系列语句进行异常处理

try:

        代码块(可能出现异常的执行语句)

except:

        代码块(出现异常的处理方式)

else:

        代码块(没有出现异常的执行语句)

-->异常处理示例如下:

print("hello")

try:

        print(a)

except:

        print("跳过异常")

else:

    print("我是else语句")

print("world")

# hello

# 跳过一场

# world


异常传播

当在函数中出现了异常,如果进行了处理,那么异常不会传播

如果没有进行了处理,那么异常会传播到函数调用处,继而像全局作用域传播

def fn():

     print(a)

fn()

# Traceback (most recent call last):

#  File "D:/XXX/异常/异常的传播.py", line 7, in XXX

#  File "D:/XXX/异常/异常的传播.py", line 6, in XXX

# NameError: name 'a' is not defined

总结: 首先a是没用定义的变量,出现异常,导致函数调用出现了异常

-->函数嵌套使用时的异常传播

def fn():

     print(a)

 def fn2():

     print("我是fn2")

     fn()

 def fn3():

     print("我是fn3")

     fn2()

 fn3()

//运行结果

我是fn3

我是fn2

# Traceback (most recent call last):

#  File "D:/unity3d/异常/异常的传播.py", line 24, in

#  File "D:/unity3d/异常/异常的传播.py", line 23, in fn3

#  File "D:/unity3d/异常/异常的传播.py", line 19, in fn2

#  File "D:/unity3d/异常/异常的传播.py", line 15, in fn

# NameError: name 'a' is not defined


抛异常:

        当程序出现异常时,所有的异常会被传递到异常对象中去

  而异常的传播时,就是异常对象抛给了调用处

常见异常对象:

  ErrorObject:NameError;ZeroDivisionError;KeyError......


更全面的异常处理语句:

try:

    代码块(可能出现异常的执行语句)

except:

    代码块(出现异常的处理方式)

else:

    代码块(没有出现异常的执行语句)

finally:

    代码块(前面出不出现异常都会执行的代码)

异常处理示例:

print("开始")

try:

    print(10/2)  无异常

   print(10/0)    有异常

# except后面不跟内容,则捕获try里面出现的所有异常

# except NameError:

     print("出现nameerror")

#except Exception:Exception捕捉try语句里面出现的所有异常对象

except Exception as e:

        print("出现异常",e,type(e))

else:

    print("继续")

finally:

    print("结束")

# 没有异常

# 开始

# 5.0

# 继续

# 结束


# 有异常

# 开始

# 出现异常 division by zero

# 结束

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、何为异常 异常- 在程序运行的过程中,不可避免的会出现一些错误。比如 使用了不存的索引,引用了没有赋值的变量....
    Sky_Brige阅读 62评论 0 0
  • 15-异常和文件 1、异常程序在运行的过程中,不可避免的会出现一些错误例如 使用了没有复制的变量、使用了不存在的索...
    jxxh阅读 167评论 0 0
  • 异常介绍 先来看一个最简单的异常,输出一个没有定义的变量: 那么上面就是出现异常的一个情况,NameError是异...
    DeeJay_Y阅读 251评论 0 0
  • 异常 # print('hello')# try:# # try中放置的是有可能出现错误的代码# prin...
    BABYMISS阅读 212评论 0 3
  • #像是直接print a 却没给a赋值 就会报错 #print(a)#异常就是在程序运行中不可避免的出现的错误 #...
    李烁_e500阅读 210评论 0 0