首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

异常

第15节 异常

第15节 异常作业解答一,认识异常二,异常处理三,断言(类似raise)四,自行定义异常类型 (控制类型)作业解答

# 根据课堂上给出的上下文管理器,判断IO操作和文件操作那个速度快

fromdatetimeimportdatetime

importio

classRunTime(object):

def__enter__(self):

self.start_time=datetime.now()

print(self.start_time)

returnself.start_time

def__exit__(self,exc_type,exc_val,exc_tb):

self.end_time=datetime.now()

print(self.end_time)

print('运行时间为: %s'%(self.end_time-self.start_time))

sio=io.StringIO()

sio.write('今天天气真好')

withRunTime()asa:

withopen('duqusucai.py','r')asfile:

print(file.read())

withRunTime()asb:

print(sio.getvalue())

# 运行结果:

2018-4-182:58:20.221762

今天天气真好

2018-4-182:58:20.228967

运行时间为:::00.007205

2018-4-182:58:20.229365

今天天气真好

2018-4-182:58:20.229521

运行时间为:::00.000156

一,认识异常

Python的异常结构

二,异常处理

例 1

try:

withopen('meiyouzhegewenjian.txt','r')asf:

f.read()

except:# except错误用法

print('没有找到该文件')

# 当try中的代码出现异常时,运行except. 若没错就运行try,except后可捕捉指定种类错误(例:except FilNotFoundError)

例 2

try:

raiseTypeError('这是一个类型错误')

exceptExceptionasa:# except正确用法

print(a)

# raise 为主动抛出异常

例 3 (控制类型)

defmyfunc(num):

iftype(num)!=int:

raiseTypeError('不是数字')

returnnum*10

print(myfunc('hello'))

# 若传入不为int会报错,反之则会正常运行

例 4

defmyfunc(num):

iftype(num)!=int:

raiseTypeError('不是数字')

returnnum*10

try:

print(myfunc('hello'))

exceptTypeError:

print('类型错误')

else:

print('没有错误')

finally:

print('不管怎样,finally都会执行')

# 运行结果:

类型错误

不管怎样,finally都会执行

例 5 (当不确定有没有这个属性时)

dic= {'name':'a','age':18}

try:

print(dic['age'])

exceptKeyError:

print('字典里没有这个值')

# 运行结果:

18

# 若查找值不存在会报错,反之则会正常运行

三,断言(类似raise)

ifnotFalse:

raiseException('条件不满足')

等效于:

assertTrue# 不抛出异常

assertFalse# 抛出异常

defmyfunc(num):

asserttype(num) ==int:

raiseTypeError('不是数字')

returnnum*10

print(myfunc('hello'))

# 若传入不为int会报错,反之则会正常运行

四,自行定义异常类型 (控制类型)

classNameMustBeLuckError(Exception):

pass

defmyfunc(name):

ifname!='luck':

raiseNameMustBeLuckError('The name must be luck!')

try:

print(myfunc('juhao'))

exceptExceptionasa:

print(a)

# 运行结果:

Thenamemustbeluck!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180419G00MIT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券