异常

  • 当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"

缩进异常

全选 --> ctrl+alt+i

异常捕获的完整格式

try:
    """
    代码片段1
    """
except AttributeError as e:
    print("捕获到AttributeError", e, e.message)
except IOError as e:
    print("捕获到IOError", e, e.message)
else:
    """
    如果excepy没有捕获到错误就执行else里的代码
    """
finally:
    """
    不管有没有错误都执行这里的代码
    """

异常捕获案例

# -*- coding:utf-8 -*-
try:
    # 错误1
    list1 = [1, 2, 3]
    print(list1[6])
    # 错误2
    import abcde
except ImportError as e:
    print("引入错误,通常是引入的模块不存在")
    print(e.message)
except IndexError as e:
    print("索引错误,通常是索引越界")
    print(e.message)
except BaseException as e:
    print("所有错误异常的基类,可以捕获所有异常")
    print(e.message)
else:
    print('如果没有异常,走这里')
finally:
    print("不管怎么样我都要执行")

常用的异常捕获类型(面试题)

  • ImportError 导入错误
  • IndexError 索引错误
  • NameError 尝试访问一个没有申明的变量
  • ZeroDivisionError 除数为0
  • SyntaxError 语法错误
  • IndexError 索引超出序列范围
  • KeyError 请求一个不存在的字典关键字
  • IOError 输入输出错误(比如你要读的文件不存在)
  • AttributeError 尝试访问未知的对象属性
  • ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串形

其它异常类型碰见再手动添加

抛出异常

raise NameError('HiThere')

自定义异常

#!/usr/bin/env python
# -*- coding:utf-8 -*-
class MyError(Exception):
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return repr(self.value)

try:
    raise MyError(2*2)
except MyError as e:
    print('My exception occurred, value:', e.value)

results matching ""

    No results matching ""