集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Python >

成都python培训那好?Python基础-异常

发布者: 成都达内     浏览次数:     发布时间:2020-07-20 13:37:35

成都python培训那好?Python基础:常见异常类型-Exception:顶级异常类,大部分异常类都是它的子类。SyntaxError:语法错误,TypeError:类型错误。...

  常见异常类型

  Exception:顶级异常类,大部分异常类都是它的子类。

  SyntaxError:语法错误

  TypeError:类型错误

  ValueError:值错误

  NameError:找不到名称,比如变量名

  IndexError:找不到索引,在序列中取值时出现

  KeyError:映射中不存在键名,在字典中取一个不存在的key时出现

  ZeroDivisionError:除法中除数为0时出现

  FileNotFoundError:找不到文件错误

  捕获指定异常

  异常捕获的写法结构是try-except,下面模拟一个除数为0的异常。

  a = 10

  b = 0

  try:

  result = a / b

  print(f"结果是:{result}")

  except ZeroDivisionError:

  print('除数不能为0')

  打印结果:

  除数不能为0

  我们虽然捕获了ZeroDivisionError,但是也可能出现其他异常,比如a和b不是数字呢?那么我们如果想单独对每一种异常都进行精确捕获与提示的话,可以多写几个except,针对性处理。

  a = 10

  b = 'abc'

  try:

  result = a / b

  print(f"结果是:{result}")

  except ZeroDivisionError:

  print('除数不能为0')

  except TypeError:

  print('类型错误')

  打印结果:

  类型错误

  如果想多个异常统一处理,也可以同时捕获多个异常。

  a = 10

  b = 'abc'

  try:

  result = a / b

  print(f"结果是:{result}")

  except (ZeroDivisionError,TypeError) as e:

  print(e)

  打印结果:

  unsupported operand type(s) for /: 'int' and 'str'

  捕获所有异常

  捕获所有异常是最省心的做法,你不用去纠结到底这段代码可能会出现哪些异常。

  a = 10

  b = 'abc'

  try:

  result = a / b

  print(f"结果是:{result}")

  except:

  print('出现异常了')

  打印结果:

  出现异常了

  主动抛出异常

  raise语句对标java和PHP中的throw,作用是抛出异常。

  a = 10

  b = 0

  try:

  if b == 0 : raise Exception('竟然是0!')

  result = a / b

  print(f"结果是:{result}")

  except Exception as e:

  print(f'出现异常了:{e}')

  打印结果:

  出现异常了:竟然是0!

  raise不仅可以在try-except语句块里面用,也可以在全局使用,在try-except里面抛出异常,会被except捕获,如果在没有try-except代码中使用的话,异常就会向上传递,传给调用方,直到传到主程序全局空间,然后停止程序运行,打印出栈跟踪信息。

  未发生异常时

  try-except语句还可以包含else代码块,让我们可以像条件判断一样进行异常处理,如果出现异常怎么办,如果没有异常又怎么办。

  a = 10

  b = 2

  try:

  if b == 0 : raise Exception('竟然是0!')

  result = a / b

  print(f"结果是:{result}")

  except Exception as e:

  print(f'出现异常了:{e}')

  else:

  print('程序一切正常')

  打印结果:

  结果是:5.0

  程序一切正常

  扫尾工作

  try-except还有一个finally代码块,无论是否异常都一定会执行finally代码块中的代码,比如打开文件之后做一些业务处理,无论过程是否出现异常,都必须要关闭文件,那么关闭文件的操作就应该放在finally代码块中。

  a = 10

  b = 0

  try:

  if b == 0 : raise Exception('竟然是0!')

  result = a / b

  print(f"结果是:{result}")

  except Exception as e:

  print(f'出现异常了:{e}')

  else:

  print('程序一切正常')

  finally:

  print('扫尾工作清理')

  打印结果:

  出现异常了:竟然是0!

  自定义异常

  自定义异常类需要继承Exception类,直接继承或间接继承都可以。

  class MyError(Exception):

  pass

  try:

  raise MyError('随便抛')

  except MyError as e:

  print(f'捕获到了自定义异常:{e}')

  打印结果:

  捕获到了自定义异常:随便抛

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56