python_day25__02__异常处理__try---exception—else---finally

#Author:'haijing'
#date:2018/10/27

# try:
# #代码块 逻辑
# pass
# except Exception as e:
# #上述代码块如果出错,自动执行当前快的内容
# pass
#
# while 1:
# try:
# inp = input('请输入序号:')
# i = int(inp)
# except Exception as e: #一旦出错会将错误信息创建一个类Exception,对象名字叫e,即e就是类Exception的对象
# print(e) #输出错误信息
# i = 1
# print(i)
#如果输入数字,那么正确的执行try中的内容,如果输入的是字母,那么去执行except中的代码

li = [1,2.3]
li[999] #错误类型:IndexError 如果把Exception换成IndexError,那么就不会去识别别的错误信息
int('qwer') #错误类型:ValueError 如果把Exception换成ValueError,那么就不会去识别别的错误信息,直接出现错误页面

#Exception可以捕获所有错误
#IndexError和ValueError只能捕获各自的错误
#IndexError和ValueError只是Exception的一个子类
#还有很多子类

#一般情况下,先让子类上,最后老大再上
try:
pass
except ValueError as e:
print('ValueError',e)
except IndexError as e:
print('IndexError',e)
except Exception as e: #以上小弟解决不了了,那么老大再去上
print('Exception',e)
else:
print('else')
finally:
print('finally')
#如果try中的内容出错,那么就会去执行exception中的内容;
# 如果try中的内容不出错,那么就会去执行else中的内容 (try中正确的内容也会执行的)
#不管try中出不出错,都会去执行finally中的内容

#--------------主动触发异常 raise方法----------------#  ******
# try:
# raise Exception('不过了...') #主动去触发异常
# except Exception as e:
# print(e) #这样try中的内容和except中的内容都会去执行 *****

#--------------主动触发异常的应用----------------#
# def db():
# # return True #表示执行成功
# return False #表示执行失败
# def index():
# try:
# result = db()
# if not result: #表示db()没有执行成功
# raise Exception('数据库处理错误') #主动去触发异常,将错误信息保存到Exception类中去,对象名字为e
# except Exception as e:
# str_error = str(e) #拿到错误信息:数据库处理错误,并将错误信息转换为字符串
# print(str_error) #这里可以将str_error写入到日志中
#
# index()


#--------------自定义异常,用到了__str__()方法----------------#
#以前
class oldbayError(Exception):
def __init__(self,msg):
self.message = msg
def __str__(self):
return self.message
obj = oldbayError('xxx')
print(obj) #打印xxx

#现在
class oldbayError(Exception):
def __init__(self,msg):
self.message = msg
def __str__(self):
return self.message
try:
raise oldbayError('我错了...') #相当于创建对象e = oldbayError('xxx')
except Exception as e:
print(e) #执行e对象的__str__()方法,获取返回值之后再打印 (print()方法的执行步骤)

#--------------断言assert方法----------------#
# assert+条件 如果条件成立那么执行下一句,如果条件不成立,那么程序会报错,终止执行代码
print(23)
assert 1==2 #程序会终止在这里 强制用户服从
print(456)

haijng in HZ 你在远方的山上 春分十里
2018.10.28 中
 
posted @ 2018-10-27 22:41  兵临城下的匹夫  阅读(129)  评论(0编辑  收藏  举报
TOP