OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...]: 捕获异常并获取附加数据 except: 没有指定异常类型,捕获任意异常 else: 没有触发异常时,执行的语句块 4、try的工作原理 执行一个try语句时,python解析器会在当前程序流的上下文中作标记...,当出现异常后,程序流能够根据上下文的标记回到标记位,从而避免终止程序。...Exception类中的异常类。
除(或取模)零 (所有数据类型) AssertionError 断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记...导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index) KeyError 映射中没有这个键 MemoryError...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理 2.异常处理的意义 python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行...该参数是可选的,如果不提供,异常的参数是"None"。 最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...这是从而Exception不是StandardError,因为这不被认为是其正常应用程序中的错误。 异常SyntaxError 解析器遇到语法错误时引发。...例如,err.object[err.start:err.end]给出编解码器失败的特定无效输入。 encoding 引起错误的编码的名称。 reason 描述特定编解码器错误的字符串。...object 编解码器正在尝试编码或解码的对象。 start 第一个无效数据索引object。 end 上次无效数据后的索引object。
)零 (所有数据类型) AssertionError 断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类...IOError 输入/输出操作失败 OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...# test3中作的异常处理 以上代码中,当执行test3函数时,test3函数中调用了test2函数,test2函数中又调用了test1函数,test1函数发生异常,而test1函数中又没有异常处理机制...若test3函数中也没有异常处理,则会继续上抛给python解析器,由python解析器进行处理并中断程序。 else子句: 在异常处理中,else子句是放在except子句之后。
代码块中没有引发异常时,执行') # 6。...| 对象没有这个属性 | | EOFError | 没有内建输入,到达EOF 标记...ImportError | 导入模块/对象失败 | | LookupError | 无效数据查询的基类... | | TypeError | 对类型无效的操作 | | ValueError... | 传入无效的参数 | | UnicodeError | Unicode
代码块中没有引发异常时,执行') # 6。...| 对象没有这个属性 | | EOFError | 没有内建输入,到达EOF 标记...ImportError | 导入模块/对象失败 | | LookupError | 无效数据查询的基类...| | TypeError | 对类型无效的操作 | | ValueError...| 传入无效的参数 | | UnicodeError | Unicode
异常处理 Python中捕捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。...OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...' 运行结果: Write content successful Program end 上面程序中IOError是用于文件操作输入\输出失败异常类,可以看出没有抛出异常,为了演示异常运行...try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
print("test") 执行结果 File "C:/异常.py", line 11 while True ^ SyntaxError: invalid syntax 解析器会报错..., FloatingPointError LookupError 当映射或序列所使用的的键或索引无效时引发的异常:IndexError、KeyError,都是继承该类 常见的具体内置异常 均是Exception...IndexError:取序列索引超出范围 KeyError:在字典中找不到指定的Key TypeError:当一个操作或函数被应用于类型不适当的对象时将被引发,传入参数的类型错误(如:传了string...给一个int类型的参数) ValueError:当传入的参数类型正确,但值不正确时引发(如:传入要求范围之外的数值) UnicodeEncodeError:编码错误 UnicodeDecodeError...AttributeError: print("AttributeError") except ValueError: print("ValueError") try语句的工作原理 首先
,finally中是一定会运行的代码。...除(或取模)零 (所有数据类型) AssertionError 断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError...用户中断执行(通常是输入^C) LookupError 无效数据查询的基类 IndexError 序列中没有没有此索引(index) KeyError 映射中没有这个键 MemoryError 内存溢出错误...缩进错误 TabError Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError 对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode...= 5: raise ValueError('not my dream number') 4. assert断言判断错误 在3.中我们用了if…raise…来抛出错误,如果利用assert…则不需要判断
解析器会输出出现语法错误的那一行,并显示一个“箭头”,指向这行里面检测到的第一个错误。...for循环后面我们错误使用了中文字符冒号(:),在错误类型后面的提示invalid character in identifier也说的很明确,就是标识符中用了无效的字符。...断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类 IOError 输入/输出操作失败...OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError
现在我们回到“标记打开状态”。接收下一个输入字符 / 时,会创建 end tag token 并改为“标记名称状态”。我们会再次保持这个状态,直到接收 >。然后将发送新的标记,并回到“数据状态”。...规范中定义了每个标记所对应的 DOM 元素,这些元素会在接收到相应的标记时创建。这些元素不仅会添加到 DOM 树中,还会添加到开放元素的堆栈中。此堆栈用于纠正嵌套错误和处理未关闭的标记。...在上一步符号化以后,解析器获得这些标记,然后以合适的方法创建 DOM 对象并将这些符号插入到 DOM 对象中。...规范中定义了每个标记所对应的 DOM 元素,这些元素会在接收到相应的标记时创建。这些元素不仅会添加到 DOM 树中,还会添加到开放元素的堆栈中。此堆栈用于纠正嵌套错误和处理未关闭的标记。...(提交事件是从 元素触发的,JavaScript 侦听器可以检查表单,如果字段为空或无效,还可以选择取消事件。) DOM HTML语言提供了丰富的特性集,远远超出了解析器处理的标记。
基于 PEG 的高性能解析器 Python 3.9 提出用高性能和稳定的基于 PEG 的解析器取代当前基于 LL(1) 的 Python 解析器。 ...当前的 CPython 解析器基于 LL(1),LL(1) 解析器是一个自顶向下的解析器,它从左到右解析输入。 ...Python 3.9 支持 typing 模块所有标准集合中的泛型语法。 ...如果传入一个无效的密钥,则会引发 zoneinfo.ZoneInfoNotFoundError 异常。 ...__import__() 引发 ValueError,而 importlib.__import__() 引发 ImportError。
通常,解析器会向词法分析器请求一个新标记,并尝试将其与某条语法规则进行匹配。如果发现了匹配规则,解析器会将一个对应于该标记的节点添加到解析树中,然后继续请求下一个标记。 ...现在我们回到“标记打开状态”。接收下一个输入字符 / 时,会创建 end tag token 并改为“标记名称状态”。我们会再次保持这个状态,直到接收 >。然后将发送新的标记,并回到“数据状态”。...您可以在 HTML5 规范中查看标记化和树构建的完整算法 9.浏览器的容错机制 您在浏览 HTML 网页时从来不会看到“语法无效”的错误。这是因为浏览器会纠正任何无效内容,然后继续工作。 ...和书签管理以及前进/后退按钮一样,它也是浏览器在多年发展中的产物。很多网站都普遍存在着一些已知的无效 HTML 结构,每一种浏览器都会尝试通过和其他浏览器一样的方式来修复这些无效结构。 ...我们从不关闭 body 标记,因为一些愚蠢的网页会在实际文档结束之前就关闭。我们通过调用 end() 来执行关闭操作。
所有数据类型) 0做分母时抛出 AssertionError 断言语句失败 \ AttributeError 对象没有这个属性 当一个属性引用或赋值失败时,会产生 EOFError 没有内建输入,到达EOF 标记...LookupError 无效数据查询的基类 \ IndexError 序列中没有此索引(index) 如果索引超出范围,就会产生IndexError KeyError 映射中没有这个键 如果没有找到一个值作为字典的键...如果错误发生在解释器本身,会产生 TypeError 对类型无效的操作 使用+拼接的时候 必须使用字符串,或者将数字转化成字符串 ValueError 传入无效的参数 如果一个函数接收到的值类型正确,但是值不合法时产生...ValueError as e: # 捕捉value错误的子异常 print("ValueError:",e) except Exception as e: # 如果上面两个异常没有捕获到...print("true") finally: # 不管是否发生异常,在最后都会执行finally中的代码,假如try里面的代码正常执行,先执行else中的代码,再执行finally中的代码
EOFError:没有内建输入,到达EOF标记 EnvironmentError:操作系统异常的基类 IOError:输入/输出操作失败 OSError:操作系统产生的异常(例如打开一个不存在的文件)...:语法错误导致的异常 IndentationError:缩进错误导致的异常 TabError:Tab和空格混用 SystemError:一般的解释器系统异常 TypeError:不同类型间的无效操作 ValueError...UnicodeTranslateError:Unicode转换错误导致的异常 异常体系内部有层次关系,Python异常体系中的部分关系如下所示: ---- 2....如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。...在用户每次猜测之前程序会输出用户是第几次猜测,如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"。
断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类 IOError 输入/输出操作失败...OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index...语法错误 IndentationError 缩进错误 TabError Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError 对类型无效的操作 ValueError 传入无效的参数...如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。...多个异常可以放在一起,例如: except(UnicodeError, ValueError): pass 多个异常形成元组。
Python 库中定义了许多内置的异常。让我们看看一些常见的错误类型。 下表列出了 Python 中重要的内置异常。 例外 描述 断言错误 assert 语句失败时引发。...句法误差 遇到语法错误时由解析器引发。 内建 Error 当缩进不正确时引发。 TabError 当缩进由不一致的制表符和空格组成时引发。 系统误差 解释器检测到内部错误时引发。...类型错误 当函数或操作应用于不正确类型的对象时引发。 unboundlocalherror 当引用函数或方法中的局部变量,但没有值绑定到该变量时引发。...值错误 当函数获得类型正确但值不正确的参数时引发。 零分割错误 当除法或模块运算的第二个操作数为零时引发。 索引错误 试图访问无效索引处的项目时会抛出IndexError。...,会抛出ValueError。
基于 PEG 的高性能解析器 Python 3.9 提出用高性能和稳定的基于 PEG 的解析器取代当前基于 LL(1) 的 Python 解析器。...当前的 CPython 解析器基于 LL(1),LL(1) 解析器是一个自顶向下的解析器,它从左到右解析输入。...Python 3.9 支持 typing 模块所有标准集合中的泛型语法。...dt = datetime(2000, 01, 25, 01, tzinfo=ZoneInfo("Europe/London")) 如果传入一个无效的密钥,则会引发 zoneinfo.ZoneInfoNotFoundError...__import__() 引发 ValueError,而 importlib.__import__() 引发 ImportError。
12.Python3入门之异常、调试和测试 在程序运行过程中,总会遇到各种各样的错误....还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。...在Python中不同的异常可以用不同的类型(Python中统一了类与类型,类型即类)去标识,一个异常标识一种错误....LookupError 无效数据查询的基类 IndexError 序列中没有此索引(index) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的...Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError 对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError
领取专属 10元无门槛券
手把手带您无忧上云