python异常捕获排除指定类型异常_Python异常捕获与处理及自定义异常

论坛 期权论坛     
选择匿名的用户   2021-5-23 02:13   115   0
<div style="font-size:16px;">
<p>相关</p>
<p>什么是异常?异常就是“不正常”。</p>
<p>我们的程序的执行过程中发生了一个不正常的事件,这个事件影响了程序的正常运行,此时就是发生了程序异常。</p>
<p>与在Java中一样的,Python中的异常也是一个对象,当程序发生异常时,程序会抛出响应的异常对象,我们需要去捕获这个异常并解决他,防止异常导致程序停止。</p>
<p>&#39;&#39;&#39;</p>
<p>想最快的入门Python吗?请搜索:&#34;泉小朵&#34;,来学习Python最快入门教程。</p>
<p>也可以加入我们的Python学习Q群:902936549,送给每一位python的小伙伴教程资料。</p>
<p>&#39;&#39;&#39;</p>
<p>2.Python异常</p>
<p>Python官网异常描述</p>
<p>2.1. Python异常相关</p>
<p>官网对于Python内置异常的描述:</p>
<p>In Python, all exceptions must be instances of a class that derives from BaseException.</p>
<p>In a try statement with an except clause that mentions a particular class, that clause also handles any exception classes derived from that class (but not exception classes from which it is derived).</p>
<p>The built-in exception classes can be subclassed to define new exceptions; programmers are encouraged to derive new exceptions from the Exception class or one of its subclasses, and not from BaseException.</p>
<p>在Python内置异常中,所有的异常都应是BaseException的派生类。</p>
<p>在一个try-except(类似java中的try-catch)代码块中,except后会声明一种异常,声明的这种异常能处理所有该异常的子类异常(但是不包括他的父类异常)。</p>
<p>内部异常类可以被继承来定义新的异常类,并且建议程序员来通过继承Exception而不是BaseException来定义一个新的异常类。</p>
<p>1</p>
<p>短短三句话,说明了Python异常的定义、处理办法和自定义异常。我们下面也会从异常处理和自定义异常两方面来讲解。</p>
<p>2.2.Python内置异常结构</p>
<p>首先我们来看一下Python内置异常类的结构,可见Exception其实也是BaseException的一个子类,而Exception是常规异常的基类,我们的自定义异常将会继承这个类。</p>
<p>BaseException # 所有异常的基类</p>
<p>&#43;-- SystemExit # 解释器请求退出</p>
<p>&#43;-- KeyboardInterrupt # 用户中断执行(通常是输入^C)</p>
<p>&#43;-- GeneratorExit # 生成器(generator)发生异常来通知退出</p>
<p>&#43;-- Exception # 常规异常的基类</p>
<p>&#43;-- StopIteration # 迭代器没有更多的值</p>
<p>&#43;-- StopAsyncIteration # 必须通过异步迭代器对象的anext()方法引发以停止迭代</p>
<p>&#43;-- ArithmeticError # 各种算术错误引发的内置异常的基类</p>
<p>| &#43;-- FloatingPointError # 浮点计算错误</p>
<p>| &#43;-- OverflowError # 数值运算结果太大无法表示</p>
<p>| &#43;-- ZeroDivisionError # 除(或取模)零 (所有数据类型)</p>
<p>&#43;-- AssertionError # 当assert语句失败时引发</p>
<p>&#43;-- AttributeError # 属性引用或赋值失败</p>
<p>&#43;-- BufferError # 无法执行与缓冲区相关的操作时引发</p>
<p>&#43;-- EOFError # 当input()函数在没有读取任何数据的情况下达到文件结束条件(EOF)时引发</p>
<p>&#43;-- ImportError # 导入模块/对象失败</p>
<p>| &#43;-- ModuleNotFoundError # 无法找到模块或在在sys.modules中找到None</p>
<p>&#43;-- LookupError # 映射或序列上使用的键或索引无效时引发的异常的基类</p>
<p>| &#43;-- IndexError # 序列中没有此索引(index)</p>
<p>| &#43;-- KeyError # 映射中没有这个键</p>
<p>&#43;-- MemoryError # 内存溢出错误(对于Python 解释器不是致命的)</p>
<p>&#43;-- NameError # 未声明/初始化对象 (没有属性)</p>
<p>| &#43;-- UnboundLocalError # 访问未初始化的本地变量</p>
<p>&#43;-- OSError # 操作系统错误,EnvironmentError,IOError,WindowsError,socket.error,select.error和mmap.error已合并到OSError中,构造函数可能返回子类</p>
<p>| &#43;-- BlockingIOError # 操作将阻塞对象(e.g. socket)设置为非阻塞操作</p>
<p>| &#43;-- ChildProcessError # 在子进程上的操作失败</p>
<p>| &#43;-- ConnectionError # 与连接相关的异常的基类</p>
<p>| | &#43;-- BrokenPipeError # 另一端关闭时尝试写入管道或试图在已关闭写入的套接字上写入</p>
<p>| | &#43;-- ConnectionAbortedError # 连接尝试被对等方中止</p>
<p>| | &#43;-- ConnectionRefusedError # 连接尝试被对等方拒绝</p>
<p>| | &#43;-- ConnectionResetError # 连接由对等方重置</p>
<p>| &#43;-- FileExistsError # 创建已存在的文件或目录</p>
<p>| &#43;-- FileNotFoundError # 请求不存在的文件或目录</p>
<p>| &#43;-- InterruptedError # 系统调用被输入信号中断</p>
<p>| &#43;-- IsADirectoryError # 在目录上请求文件操作(例如 os.remove())</p>
<p>| &#43;-- NotADirectoryError # 在不是目录的事物上请求目录操作(例如 os.listdir())</p>
<p>| &#43;-- PermissionError # 尝试在没有足够访问权限
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP