美文网首页
Python-学习之路-10 异常的处理

Python-学习之路-10 异常的处理

作者: 末世狂人 | 来源:发表于2019-02-21 23:02 被阅读0次

异常

  • 在语法逻辑正确的前提下,出现的问题
  • 在python里面,异常是一个类,可以处理和使用

异常分类

  • BaseException 所有异常的基类
  • SystemExit 解释器请求退出
  • KeyboardInterrupt 用户中断执行(通常是输入^C)
  • Exception 常规错误的基类
  • StopIteration 迭代器没有更多的值
  • GeneratorExit 生成器(generator)发生异常来通知退出
  • StandardError 所有的内建标准异常的基类
  • ArithmeticError 所有数值计算错误的基类
  • FloatingPointError 浮点计算错误
  • OverflowError 数值运算超出最大限制
  • ZeroDivisionError 除(或取模)零 (所有数据类型)
  • 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 用户代码生成的警告

异常处理

  • 保证程序在最坏的情况下,问题得到妥善的处理

  • 异常处理模块的语法

      try:
          容易产生错误的代码
          如果出现异常,将异常从当前代码块扔出去,尝试异常的解决
          
      except 异常类型1:
          解决方案1
          
      except 异常类型2 as e:
          解决方案2
          
      except (异常类型1,异常类型2,....):
          针对多个异常采取相同的解决方案
      
      except:
          针对所有异常采取同样的解决方案
          
      else:
          如果没有出现异常,将执行此代码
          
      finally:
          不管有没有异常,都将执行此代码
          
      - 除了except(最少一个)以外,else 和finally都是可选的
    
# 异常捕获
try:
    num = int(input("请输入一个数:"))
    rst = 100/num
    print("计算结果是{0}".format(rst))
#越具体的错误 越往前放
except ZeroDivisionError as e:
    print("除数不能为0")
    print(e)
except(NameError,AttributeError):
    print("要么名字有问题,要么属性有问题,你检查下呗")
    
#所有的异常都继承自Exception 如果上面的异常捕获没有捕获到的话,这里将会进行捕获
except Exception as e:
    print("反正是出错了,但是我也不知道是什么错")
else:
    print("你的代码正确了!没有错误哦!")
finally:
    print("代码结束了!game over")
请输入一个数:1
计算结果是100.0
你的代码正确了!没有错误哦!
代码结束了!game over

手动引发异常

  • 当某些时候,用户希望自己引发一个异常的时候可以使用 raise 关键字来引发异常
  • 语法
    • raise ExceptionType
      • 如 raise NameError

自定义异常

  • 自定义异常必须是系统异常的子类
  • 只要是raise异常,那么推荐自定义异常
  • 自定义异常一般包括:
    • 自定义发生异常的异常代码
    • 自定义发生异常的问题提示
    • 自定义发生异常的行数
  • 最终的目的是,一旦发生异常,方便程序员快速定位错误现场
#自定义异常
class TestError(ValueError):
    pass

try:
    print("my name is tom")
    raise TestError

# 如果这里不对testError进行捕获的话,那么valueError将对错误进行捕获,因为testerror的父类是valueError
except TestError as e:
    print("testError")
except ValueError as e:
    print("value error")
    
my name is tom
testError

相关文章

  • Python-学习之路-10 异常的处理

    异常 在语法逻辑正确的前提下,出现的问题 在python里面,异常是一个类,可以处理和使用 异常分类 BaseEx...

  • python-异常处理

    python3中不能用上面的方式捕获,需要加一个括号(NameError,FileNotFoundError) t...

  • Python-异常处理

    异常处理: 对出现的异常做出相应处理 Python中的异常处理能力是很强大的,可向用户准确反馈出错信息。在Pyt...

  • Python-异常处理

    异常处理介绍 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异...

  • Python-异常处理

    文件作用:学习Python基础-抛异常(try:except:---不终止程序运行;raise-终止程序运行) #...

  • 笔记更新进度提示

    各位, 为了更快更好的录制,Python-核心阶段课程(面向对象, Pygame, 异常处理等等); 会把更多的时...

  • python-文件处理/异常处理

    很多时候Python程序的输入/输出是与用户进行交互,从用户那里使用input()等方法获取输入,并使用print...

  • Python-异常处理(exceptional handling

    版本:python2.7 系统:Mac OSX 异常处理是代替日渐衰落的error code方法的新法,提供e...

  • python-异常处理、模块化

    异常处理 异常Exception 错误 Error :错误是可以避免的逻辑错误:算法写错了,加法写成了减法笔误:变...

  • Python-入门-12-异常处理

    微信公众号原文 系统:Windows 7语言版本:Anaconda3-4.3.0.1-Windows-x86_64...

网友评论

      本文标题:Python-学习之路-10 异常的处理

      本文链接:https://www.haomeiwen.com/subject/tgpjyqtx.html