加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

编程须知:Python异常知多少以及如何处理?

发布时间:2019-09-20 20:52:25 所属栏目:建站 来源:牛旦教育IT课堂
导读:本文首要是熟悉python的非常有哪些范例,以及怎样举办python非常处理赏罚?有必然的参考代价,有必要的伴侣可以参考一下,但愿对你有所辅佐。假若有其余编程说话履历,如Java,可以领略的更深入些。 我们知道,非常处理赏罚,是编程说话或计较机硬件里的一种机制,
副问题[/!--empirenews.page--]

本文首要是熟悉python的非常有哪些范例,以及怎样举办python非常处理赏罚?有必然的参考代价,有必要的伴侣可以参考一下,但愿对你有所辅佐。假若有其余编程说话履历,如Java,可以领略的更深入些。

编程须知:Python非常知几多以及如那里理赏罚?

我们知道,非常处理赏罚,是编程说话或计较机硬件里的一种机制,用于处理赏罚软件或信息体系中呈现的非常状况(即超出措施正常执行流程的某些非凡前提),当代编程说话都有这种担保机制,以担保措施整体的运行妥当……空话少说,来看看Python的非常以及相干处理赏罚。

1.非常的范例

非常的范例多种多样,常见的非常有:

AttributeError 试图会见一个工具没有的属性,好比foo.x,可是foo没有属性xIOError 输入/输出非常;根基上是无法打开文件ImportError 无法引入模块或包;根基上是路径题目或名称错误IndentationError 语法错误(的子类) ;代码没有正确对齐IndexError 下标索引超出序列界线,好比当x只有三个元素,却试图会见x[5]KeyError 试图会见字典里不存在的键KeyboardInterrupt Ctrl+C被按下NameError 实行会见一个没有阐明的变量SyntaxError Python代码犯科,代码不能编译(小我私人以为这是语法错误,写错了)TypeError 传入工具范例与要求的不切合UnboundLocalError 试图会见一个还未被配置的局部变量,根基上是因为还有一个同名的全局变量,导致你觉得正在会见它ValueError 传入一个挪用者不祈望的值,纵然值的范例是正确的

其他的非常:

Exception可以捕捉恣意非常

BaseException 全部非常的基类SystemExit 表明器哀求退出KeyboardInterrupt 用户间断执行(凡是是输入^C)Exception 通例错误的基类StopIteration 迭代器没有更多的值GeneratorExit 天生器(generator)产生非常来关照退出StandardError 全部的内建尺度非常的基类ArithmeticError 全部数值计较错误的基类FloatingPointError 浮点计较错误OverflowError 数值运算超出最大限定ZeropisionError 除(或取模)零 (全部数据范例)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 用户代码天生的告诫

2.捕捉非常,处理赏罚非常

只有将对应的非常范例捕捉才气举办非常的处理赏罚

非常的捕捉处理赏罚方法:

  1. try: 
  2.  #措施执行的代码,非常检测的代码 
  3.  pass 
  4. except Exception as e: 
  5.  #捕捉非常后举办的代码, 
  6.  print(e) 
  7.  pass 
  8. else: 
  9.  #没有捕捉到响应的非常后举办的代码 
  10.  pass 
  11. finally: 
  12.  #岂论有没有非常捕捉最后都要执行的代码 
  13.  pass 

这里的except就像是java里的catch

也可以在代码中添加多个except语句来捕捉差异种范例的非常,执行响应差异的操纵

3.主动抛出非常

非常的抛出可以手动添加

  1. try: 
  2.  raise Exception("我本身抛的") 
  3. except Exception as e: 
  4.  print(e)#这里会输出“我本身抛的” 

4.自界说非常范例

在现实编程中,说话内置的非常并不总够用,全部,我们可以本身界说本身所必要的非常的范例。可以这样来实现。

首要操作类中的__str__要领实现

  1. class myException(BaseException): 
  2.  def __init__(self,message): 
  3.  self.message=message 
  4.  def __str__(self): 
  5.  return self.message 
  6.   
  7. try: 
  8.  raise myException('自界说的非常范例') 
  9. except myException as e: 
  10.  print(e)  

5.断言

断言assert用于判定某个前提是否创立,假如不创立则抛出AssertionError非常,该非常可以捕捉。

示譬喻下:

  1. assert 前提 
  2. 类如: 
  3. assert 1 == 1 
  4. assert 2 + 2 == 2 * 2 
  5. assert len(['my list', 12]) < 10 
  6. assert range(3) == [0, 1, 2] 
  7. #相等于 
  8. if not 前提 : 
  9.  raise AssertionError() 
  10.   
  11. assert 前提,"描写" 
  12. #相等于 
  13. if not 前提 : 
  14.  raise AssertionError("描写") 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读