python自定义异常-Python异常处理和自定义异常

Python标准异常:

BaseException->所有异常的基类

SystemExit->解释器请求退出

KeyboardInterrupt->用户中断执行(通常是输入^C)

Exception->常规错误的基类

StopIteration->迭代器没有更多的值

GeneratorExit->生成器(generator)发生异常来通知退出

StandardError->所有的内建标准异常的基类

ArithmeticError->所有数值计算错误的基类

FloatingPointError->浮点计算错误

OverflowError->数值运算超出最大限制

ZeroDivisionError->除(或取模)零 (所有数据类型)

AssertionError->断言语句失败

AttributeError->对象没有这个属性

EOFError->没有内建输入,到达EOF 标记

EnvironmentError->操作系统错误的基类

IOError->输入/输出操作失败

OSError->操作系统错误

WindowsError->系统调用失败

ImportError->导入模块/对象失败

LookupError->无效数据查询的基类

IndexError->序列中没有此索引(index)

KeyError->映射中没有这个键

MemoryError->内存溢出错误(对于Python 解释器不是致命的)

NameError->未声明/初始化对象 (没有属性)

UnboundLocalError->访问未初始化的本地变量

ReferenceError->弱引用(Weak reference)试图访问已经垃圾回收了的对象

RuntimeError->一般的运行时错误

NotImplementedError->尚未实现的方法

SyntaxError->Python 语法错误

IndentationError->缩进错误

TabError->Tab 和空格混用

SystemError->一般的解释器系统错误

TypeError->对类型无效的操作

ValueError->传入无效的参数

UnicodeError->Unicode 相关的错误

UnicodeDecodeError->Unicode 解码时的错误

UnicodeEncodeError->Unicode 编码时错误

UnicodeTranslateError->Unicode 转换时错误

Warning->警告的基类

DeprecationWarning->关于被弃用的特征的警告

FutureWarning->关于构造将来语义会有改变的警告

OverflowWarning->旧的关于自动提升为长整型(long)的警告

PendingDeprecationWarning->关于特性将会被废弃的警告

RuntimeWarning->可疑的运行时行为(runtime behavior)的警告

SyntaxWarning->可疑的语法的警告

UserWarning->用户代码生成的警告

try:

fh = open("testfile", "w")

fh.write("test except!!!")

except IOError:

print ("Error: not found file or read file error")

else:

print("内容写入文件成功")

fh.close()

输出:

内容写入文件成功

结论:

try:

正常的操作

except:

发生异常,执行这块代码

else:

如果没有异常执行这块代码

try:

fh = open("testfile", "w")

try:

fh.write("test except!!!")

finally:

print("关闭文件")

fh.close()

except IOError:

print("Error: 没有找到文件或读取文件失败")

输出:

关闭文件

结论:

1、当在try块中抛出一个异常,立即执行finally块代码。

2、finally块中的所有语句执行后,异常被再次触发,并执行except块代码。

# 定义函数

def convertInt(var):

try:

return int(var)

except Argument as e:

print("参数没有包含数字 ", e)

except ValueError as e:

print("参数没有包含数字 ", e)

convertInt("what21");

输出:

Traceback (most recent call last):

File "D:/ProgramData/PycharmProjects/01.BasicKnowledge/04.Exception/main.py", line 4, in convertInt

return int(var)

ValueError: invalid literal for int() with base 10: "what21"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "D:/ProgramData/PycharmProjects/01.BasicKnowledge/04.Exception/main.py", line 9, in

convertInt("what21");

File "D:/ProgramData/PycharmProjects/01.BasicKnowledge/04.Exception/main.py", line 5, in convertInt

except Argument as e:

NameError: name "Argument" is not definedclass 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("抛出自定义异常, value:", e.value)

输出:

抛出自定义异常, value: 4

结论:

1、通过继承Exception类,来创建一个新的Exception类,可以直接继承或者间接继承。

2、raise指定了要被抛出的异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值