python-异常处理

# 异常处理,英文名为exceptionalhandling,是代替日渐衰落的errorcode方法的新法,提供errorcode所未能具体的优势。
# 异常处理分离了接收和处理错误代码。这个功能理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解。
# 异常处理(又称为错误处理)功能提供了处理程序运行时出现的任何意外或异常情况的方法。
# 异常处理使用try、catch和finally关键字来尝试可能未成功的操作,处理失败,以及在事后清理资源。
#   python的运行时错误称作异常
#   (1)语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译
#   (2)逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成、计算或者输出结果需要的过程无法执行等
#
#   python异常是一个对象,表示错误或意外情况
#   (1)在python检测到一个错误时,将触发一个异常
#     python可以通常异常传导机制传递一个异常对象,发出一个异常情况出现的信号
#     程序员也可以在代码中手动触发异常
#   (2)python异常也可以理解为:程序出现了错误而在正常控制流以外采取的行为
#     第一阶段:解释器触发异常,此时当前程序流将被打断
#     第二阶段:异常处理,如忽略非致命错误、减轻错误带来的影响等
#
#   检测和处理异常:
#   (1)异常通过try语句来检测
#     任何在try语句块里的代码都会被检测,以检查有无异常发生
#   (2)try语句主要有两种形式:
#     try-except: 检测和处理异常
#       可以有多个except
#       支持使用else子句处理没有探测异常的执行的代码
#     try-finally: 仅检查异常并做一些必要的清理工作
#       仅能有一个finally
#   (3)try语句的复合形式:
#     try-execpt-else-finally
python异常步骤理解
# python 中的异常种类。
# AssertionError: 断言语句失败
# AttributeError: 属性引用或赋值失败
# FloatingPointError: 浮点型运算失败
# IOError:  I/O操作失败
# ImportError: import语句不能找到要导入的模块,或者不能找到该模块特别请求的名称
# IndentationError: 解析器遇到了一个由于错误的缩进而引发的语法错误
# IndexError: 用来索引序列的证书超出了范围
# KeyError: 用来索引映射的键不再映射中
# keyboardInterrupt: 用户按了中断键(Ctrl+c,Ctrl+Break或Delete键)
# MemoryError: 运算耗尽内存
# NameError: 引用了一个不存在的变量名
# NotImplementedError: 由抽象基类引发的异常,用于指示一个具体的子类必须覆盖一个方法
# OSError: 由模块os中的函数引发的异常,用来指示平台相关的错误
# OverflowError: 整数运算的结果太大导致溢出
# SyntaxError: 语法错误
# SystemError: python本身或某些扩展模块中的内部错误
# TypeError:对某对象执行了不支持的操作
# UnboundLocalError:引用未绑定值的本地变量
# UnicodeError:在Unicode的字符串之间进行转换时发生的错误
# ValueError:应用于某个对象的操作或函数,这个对象具有正确的类型,但确有不适当的值
# WindowsError:模块os中的函数引发的异常,用来指示与WIndows相关的错误
# ZeroDivisionError: 除数为0
python常用异常
#   异常代码块。
try:

    # 主代码块

    #   主动触发错误....
    raise Exception('错误了。。。')

except Exception as e:
    # 异常时,执行该块
    pass
finally:
    # 无论异常与否,最终执行该块
    pass

 练习:

name = {}
lists = [1,2]

try:
    open('ddd.txt')
except FileNotFoundError as e:
    print(e)

try:
    t1 = name['index']
except KeyError as e1:
    print(e1)

try:
    lists[3]
except IndexError as e2:
    print(e2)
    
# [Errno 2] No such file or directory: 'ddd.txt'
# 'index'
# list index out of range

自定义异常

#    自定义异常...

class DouFuException(Exception):
    """定义异常类"""
    def __init__(self,message):
        self.message = message

    def __str__(self):
        return self.message


try:
    #   主动触发异常拉
    raise DouFuException('服务器连接失败...')
except DouFuException as e:
    print(e)

# 服务器连接失败...

猜你喜欢

转载自www.cnblogs.com/yzhl/p/9046597.html