博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 错误和异常
阅读量:5258 次
发布时间:2019-06-14

本文共 1473 字,大约阅读时间需要 4 分钟。

语法错误


Python 解释器会输出出现语法错误的那一行,并显示一个箭头,指向行里检测到的第一个错误。

>>> while True print('Hello')  File "
", line 1 while True print('Hello') ^SyntaxError: invalid syntax

异常


即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

异常以不同的类型出现,这些类型都作为信息的一部分打印出来。错误信息的前面部分显示了异常发生的上下文,并以调用栈的形式显示具体信息。

异常处理


通常,异常不会被程序自动处理。Python 处理异常会用到 try-except 语句。

语法结构:

try:    
<语句块1>
except
<异常类型>
:
<语句块2>

try 语句的工作原理如下:

  • 首先,执行 try 子句的语句块。
  • 如果没有异常发生,则跳过 except 子句。
  • 如果发生了异常,则跳过 try 子句中剩余的语句部分。然后,如果异常类型和 except 关键字后面的异常类型匹配(同一个类或者是它的基类),则执行 except 子句的语句块,然后继续执行 try 语句之后的代码。
  • 如果发生的异常和 except 子句中的异常不匹配,则将其传递到外部的 try 语句中;如果没有找到处理程序,则它是一个未处理异常,执行将停止并显示异常信息。

try … except 语句可以带有一个 else 子句,放在所有 except 子句之后。当 try 子句没有抛出异常时,需要执行一些代码,可以使用这个子句。有发生异常时不会执行 else 子句。

语句最后还可以加上一个 finally 子句,不管是否有异常发生,该子句都会被执行。当 try 语句中发生了未被 except 捕获的异常,在 finally 子句执行完成后,异常会被重新抛出。

抛出异常


Python 使用 raise 语句抛出一个指定的异常。

>>> raise NameError('Here')Traceback (most recent call last):  File "
", line 1, in
NameError: Here

要抛出的异常由 raise 的唯一参数标识。它必须是一个异常的实例或者是异常的类(继承 Exception 类)。

如果你需要明确一个异常是否抛出,但不想处理它,raise 语句可以再次抛出该异常。

>>> try:...     raise NameError('Here')... except NameError:...     print('An exception flew by!')...     raise...An exception flew by!Traceback (most recent call last):  File "
", line 2, in
NameError: Here

 

转载于:https://www.cnblogs.com/yutb/p/10815381.html

你可能感兴趣的文章
简述spring中常有的几种advice?
查看>>
整理推荐的CSS属性书写顺序
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>
源代码的下载和编译读后感
查看>>
Kafka学习笔记
查看>>
Octotree Chrome安装与使用方法
查看>>
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>
MetaWeblog API Test
查看>>
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>
移动、尺寸改变
查看>>