作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。

Python有两种错误很容易辨认:语法错误和异常。

语法错误

Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例

这个例子中,函数 print() 被检查到有错误,是它前面缺少了一个冒号(:)。

语法分析器指出了出错的一行,并且在最先找到的错误的位置标记了一个小小的箭头。

异常

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

大多数的异常都不会被程序处理,都以错误信息的形式展现在这里:

异常以不同的类型出现,这些类型都作为信息的一部分打印出来: 例子中的类型有 ZeroDivisionError,NameError 和 TypeError。

错误信息的前面部分显示了异常发生的上下文,并以调用栈的形式显示具体信息。异常处理

以下例子中,让用户输入一个合法的整数,但是允许用户中断这个程序(使用 Control-C 或者操作系统提供的方法)。用户中断的信息会引发一个 KeyboardInterrupt 异常。

try语句按照如下方式工作;

  • 首先,执行try子句(在关键字try和关键字except之间的语句)

  • 如果没有异常发生,忽略except子句,try子句执行后结束。

  • 如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。

  • 如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。

一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如:

用户自定义异常

你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,例如:

在这个例子中,类 Exception 默认的 init() 被覆盖。

当创建一个模块有可能抛出多种不同的异常时,一种通常的做法是为这个包建立一个基础异常类,然后基于这个基础类为不同的错误情况创建不同的子类:大多数的异常的名字都以"Error"结尾,就跟标准的异常命名一样。

定义清理行为

try 语句还有另外一个可选的子句,它定义了无论在任何情况下都会执行的清理行为。 例如:

try:

… raise KeyboardInterrupt

… finally:

… print(‘Goodbye, world!’)

Goodbye, world!

Traceback (most recent call last):

File “”, line 2, in

KeyboardInterrupt

以上例子不管 try 子句里面有没有发生异常,finally 子句都会执行。

如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出。

下面是一个更加复杂的例子(在同一个 try 语句里包含 except 和 finally 子句):

预定义的清理行为

一些对象定义了标准的清理行为,无论系统是否成功的使用了它,一旦不需要它了,那么这个标准的清理行为就会执行。

这面这个例子展示了尝试打开一个文件,然后把内容打印到屏幕上:

for line in open(“myfile.txt”):

print(line, end="")

以上这段代码的问题是,当执行完毕后,文件会保持打开状态,并没有被关闭。

关键词 with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行他的清理方法:

with open(“myfile.txt”) as f:

for line in f:

print(line, end="")

以上这段代码执行完毕后,就算在处理过程中出问题了,文件 f 总是会关闭。

Python3 中你知道有多少错误和异常相关推荐

  1. 普中51仿真器提示错误(连接异常,进入参数设置,检测下设备连接))

    普中51仿真器提示错误(连接异常,进入参数设置,检测下设备连接) 这里提供我遇到普中51仿真器提示错误(连接异常,进入参数设置,检测下设备连接)问题解决法子,如果你也有这个问题,也可以试下. 这里提供 ...

  2. python中语法错误-Python3 错误和异常

    Python3 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误 ...

  3. 一文搞懂python3基础大全(变量,标准数据类型,标识符,行与缩进,运算符和表达式,条件语句if,循环语句,函数,文件,面向对象,错误和异常,模块)

    2.Python3基础 2.1.变量 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建.变量没有类型,"类型"是变量所指的内存中对象的类型 ...

  4. Python3错误和异常

    一 .Python3 错误和异常              在Python有两种错误很容易辨认:语法错误和异常. 语法错误 Python 的语法错误或者称之为解析错,是新手经常碰到的. 异常 语法是正 ...

  5. Python3中异常处理和try/except,try/finally的用法

    1:Python3中异常处理介绍 在Python中当发生错误时,Python中的异常会自动触发,异常也能由代码触发和拦截,Python中有如下语句来触发,处理异常: a:try/except:拦截由P ...

  6. python使用-Python3 错误和异常

    Python3 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误 ...

  7. python中if错误-Python中错误和异常

    第1章 概念 错误 语法错误:代码不符合解释器或编译器的语法 逻辑错误:不完整或不合法的输入或者计算出现问题 异常:代码执行过程中,出现问题导致程序无法执行 程序遇到逻辑或算法问题 运行过程中计算机错 ...

  8. python3语法错误-Python3 错误和异常

    错误和异常 程序运行时有两种可以分辨的错误: syntax error 和 exception , 按中文来说, 就是语法错误和异常. 语法错误 语法错误也就是解析错误,是我们最优可能遇到的错误. w ...

  9. java 错误输入异常_在Java中进行输入验证期间用错误通知替换异常

    java 错误输入异常 在我以前的文章中,我写了一篇关于输入验证设计的文章 ,该设计取代了难以维护和测试的 if-else块. 但是,正如某些读者指出的那样,它有一个缺点–如果输入数据有多个验证错误, ...

最新文章

  1. FreeMarker基本语法详解及模板文件的组成(二)
  2. NetScaler的部署实验之二NetScaler的传输环路值的设定
  3. Linux常见面试题2
  4. python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解
  5. 为什么互联网公司都喜欢自研业务系统?
  6. 结合源码深入理解Android Crash处理流程
  7. php const 字符串,我可以使用字符串连接在PHP中定义一个类CONST吗?
  8. 使用using与typedef来定义别名
  9. GUID generation RSS_SYSTEM_GET_UNIQUE_ID
  10. ALBERT、XLNet,NLP技术发展太快,如何才能跟得上节奏?
  11. MXNet——symbol
  12. jithub使用整理资料
  13. 压力测试以及编译安装httpd2.4
  14. 电脑录屏工具_这四款录屏工具,也许是电脑录屏软件中免费、无广告且最实用的,程序员必备...
  15. 长春java开发能开多少钱,从理论到实践!
  16. Python黑帽编程2.7 异常处理
  17. PMP考试需要准备什么教材呢?
  18. should be described in NUMA config 和 CPU feature cmt not found
  19. 华为OD机试题:工厂流水线调度
  20. 济南申报高新技术企业不符合的条件

热门文章

  1. android shell强制删除文件夹_别再乱清手机内存了,删除这3个“特殊”文件夹!空间释放8GB...
  2. webbrowser中localhost和发布的地址_004、Spring Boot中的项目属性配置
  3. opengl双三次bezier曲面_试驾艾瑞泽5 PLUS:双外观设计,搭L2级全速域驾驶辅助,月销要破万?...
  4. python实现dos攻击_dos攻击原理及攻击实例
  5. 小程序 php转excel,做微信小程序上传数据 数据格式?-微信 上传数据 生成excle
  6. 小程序分享到朋友圈功能_小程序开发日记 分享到朋友圈
  7. java bean spring_Java bean与Spring、Spring MVC关系
  8. 408计算机先学哪个,408计算机统考各科难度分析
  9. 用PHP做一道单选选择题的页面,【大神看过来】根据一个用PHP做的单选投票,改成多选,且可显示...
  10. NOIP 2011 聪明的质检员-二分答案