python异常介绍 try 主动抛出异常 断言

异常

'''
异常是程序运行过程中发生的非正常情况, 是一个错误发生时的信号

异常如果没有被正确处理的话, 将导致程序被终止, 这对于用户体验是非常差的, 可能导致严重的后果

处理异常的目的就是提高程序的健壮性
'''

常见异常

 

TypeError: 'int'
object is not subscriptable
对象不能被切片

  

TypeError: 'list'
object is not callable
对象不能被调用

  

IndexError: list index out of range
索引超出范围

  

TypeError: 'builtin_function_or_method'
object is not iterable
对象不能被迭代

  

KeyError: 'xxx'
不存在这个key

  

FileNotFoundError: [Errno 2]
No such file or directory: 'xxxxx'
文件找不到

异常处理

# 语法:

try:

​    可能会出现异常的代码
  放到try里面

except 具体异常类型 as e:

​    如果真的发生异常就执行except

 

try:
    正常的操作
   ......................
except:
    发生异常,执行这块代码
   ......................
else:
    如果没有异常执行这块代码

try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

  

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
finally:
    print "Error: 没有找到文件或读取文件失败"

  

主动抛出异常

我们可以使用raise语句自己触发异常

raise语法格式如下:

raise [Exception [, args [, traceback]]]

  

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行

断言assert

Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。

断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,可以先判断当前系统是否符合条件。

语法格式如下:

assert expression 

等价于:

if not expression:
    raise AssertionError

  

assert 后面也可以紧跟参数:

assert expression [, arguments] 

等价于:

if not expression:
    raise AssertionError(arguments)
原文地址:https://www.cnblogs.com/wakee/p/10921968.html