程序员的公众号:源1024,获取更多资料,无加密无套路!
最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上
目录
语法错误
异常
异常处理
处理形式
抛出异常
自定义异常
系列文章索引
Python有两种错误:语法错误和异常。
语法错误
while True
print('Hello world')
这种错误,编译器会给出提示,按照提示修改即可。
异常
语法正确,但是代码运行时被检测到的错误。
print('1' + 2)
#报错
TypeError: can only concatenate str (not "int") to str
print(100/0)
#报错
ZeroDivisionError: division by zero
上面代码都发生了异常:TypeError异常、ZeroDivisonError异常
异常处理
Python 程序捕捉异常使用 try/except 语句
处理形式
#try/except
try:
...
except 异常类型:
...
#try/except...else
try:
...
except 异常类型:
...
else:
...
# try-finally
try:
...
except 异常类型:
...
else:
...
finally:
...
def testException(n):
try:
print('try:',100 / n)
except ZeroDivisionError:
print('except异常逻辑处理。。。')
else:
print('else 逻辑处理。。。')
finally:
print('finally 逻辑处理。。。')
testException(0)
#输出
except异常逻辑处理。。。
finally 逻辑处理。。。
testException(1)
#输出
try: 100.0
else 逻辑处理。。。
finally 逻辑处理。。。
else在所有 except 之后使用,没有出现异常时执行;
finally 无论是否出现异常都会执行,最后执行。
抛出异常
a = 0
if a == 0:
raise Exception('a不能为0')
#输出
Exception: a不能为0
自定义异常
class MyException(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return repr(self.msg)
def test():
try:
raise MyException('触发自定义异常了。。。')
except MyException1 as e:
print('MyException异常信息:' + e.msg)
else:
print('不是MyException异常')
finally:
print('结束了。')
test()
#输出
MyException异常信息:触发自定义异常了。。。
结束了。
系列文章索引
Python(一)关键字、内置函数
Python(二)基本数据类型
Python(三)数据类型转换
Python(四)字符串
Python(五)数字
Python(六) 列表
Python(七) 条件控制、循环语句
Python(八) 字典
Python(九) 集合
Python (十) 元组