集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Python >

小白Python学习路线之Python Exceptions介绍

发布者: 成都达内     浏览次数:     发布时间:2018-05-18 10:52:47

Python程序一旦遇到错误就会终止。 在Python中,错误可能是语法错误或异常。 在本文中,您将看到什么是异常以及它与语法错误的区别。 之后,您将了解如何抛出异常和做出断言。 然后...

  小白Python学习路线之Python Exceptions介绍

  目录

  异常与语法错误

  抛出异常

  AssertionError异常

  try/except块:处理异常

  else语句

  使用finally语句做最后后清理

  汇总

  Python程序一旦遇到错误就会终止。 在Python中,错误可能是语法错误或异常。 在本文中,您将看到什么是异常以及它与语法错误的区别。 之后,您将了解如何抛出异常和做出断言。 然后,您将看到try和except块的演示。

  Python学习路线

  异常与语法错误

  解析器检测到错误的语句时会发生语法错误。 观察下面的例子:

  Python学习路线

  箭头指出解析器遇到语法错误的位置。 在这个例子中,多了一个右括号。 删除它并再次运行你的代码:

  Python学习路线

  这一次,你遇到了一个异常错误。 无论何时语法正确的Python代码导致错误,这种类型的错误就会发生。 消息的最后一行指出了遇到的异常错误类型。

  Python不会显示exception error消息,而是详细说明遇到了什么类型的异常错误。 在这种情况下,它是一个ZeroDivisionError。 Python带有各种内置的异常,同样也可以创建自定义异常。

  抛出异常

  如果某种条件发生,我们可以使用raise来抛出异常。 该声明可以实现一个自定义异常。

  Python学习路线

  如果你想在某种情况发生时使用raise来抛出错误,你可以这样做:

  Python学习路线

  当你运行这段代码时,输出如下:

  Python学习路线

  该程序停下来,并将异常显示到屏幕,提供有关错误的线索。

  AssertionError异常

  与其等待程序中途崩溃,您还可以先在Python中进行断言。 我们断言某个条件得到满足。 如果这种情况证明是True,那很好! 该程序可以继续。 如果断言结果为False,你可以让程序抛出一个AssertionError异常。

  Python学习路线

  看看下面的例子,它断言代码将在Linux系统上执行:

  Python学习路线

  如果您在Linux机器上运行此代码,则断言会通过。 如果您要在Windows计算机上运行此代码,则断言的结果将为False,输出如下所示:

  Python学习路线

  在这个例子中,抛出一个AssertionError异常是该程序最后一件事。 程序将停止并不再继续。 如果这不是你想要的呢?

  try和except块:处理异常

  Python中的try和except块用于捕获和处理异常。 Python将try语句之后的代码作为程序的“正常”部分执行。 except语句后面的代码是程序对前面的try子句中的任何异常的响应。

  Python学习路线

  正如您前面所看到的,当语法正确的代码遇到错误时,Python将抛出异常错误。 如果该程序未处理它,该异常错误会使程序崩溃。 except子句决定程序如何响应异常。

  以下函数可以帮助您了解try和except块:

  Python学习路线

  linux_interaction()只能在Linux系统上运行。 如果在除Linux以外的操作系统上调用该函数,则此函数中的断言将引发AssertionError异常。

  你可以使用下面的代码试试这个函数:

  Python学习路线

  这里处理错误的方式是直接使用pass。 如果您要在Windows机器上运行此代码,您将得到以下输出:

  Python学习路线

  没有任何输出。 这里的好处是该程序没有崩溃。 但是,如果您运行代码时发现某种类型的异常,可能会好些。 为此,您可以将pass更改为可生成消息的内容,如下所示:

  Python学习路线

  在windows上执行这段代码:

  Python学习路线

  当运行此函数的程序中发生异常时,程序将通知您函数调用不成功的事实同时继续运行。

  你没有看到的是由于函数调用而抛出的错误类型。 为了准确地查看出了什么问题,您需要捕捉函数抛出的错误。

  以下代码是捕获AssertionError并将该消息输出到屏幕的示例:

  Python学习路线

  在Windows上运行此功能会输出以下内容:

  Python学习路线

  第一条消息是AssertionError,通知您该函数只能在Linux上执行。 第二条消息告诉你哪个功能没有执行。

  在前面的例子中,你调用了自己写的一个函数。 当执行该函数时,捕获了AssertionError异常并将其打印到屏幕上。

  以下是另一个打开文件并使用内置异常的示例:

  Python学习路线

  如果file.log不存在,这段代码将输出以下内容:

  Python学习路线

  这是一条信息丰富的消息,我们的程序仍将继续运行。 在Python文档中,可以看到有很多可用的内置异常。 该页面上描述的一个异常如下:

  Python学习路线

  要捕获这种类型的异常并将其打印到屏幕上,可以使用以下代码:

  Python学习路线

  在这种情况下,如果file.log不存在,则输出如下所示:

  Python学习路线

  您可以在try子句中使用多个函数调用,并预计捕获各种异常。 这里需要注意的是,try子句中的代码只要遇到异常就会停止。

  警告:捕捉异常会隐藏所有错误...即使是那些完全意外的错误。 这就是为什么你应该避免在你的Python程序中使用空except子句。 相反,你会想要引用你想要捕获和处理的特定异常类。 您可以在本教程中了解更多关于这样做的好处。

  看下面的代码。 在这里,你首先调用linux_interaction()函数,然后尝试打开一个文件:

  Python学习路线

  如果文件不存在,在Windows上运行此代码将输出以下内容:

  Python学习路线

  在try子句中,您立即遇到了异常,并没有进入您尝试打开file.log的部分。 现在看看在Linux上运行代码时会发生什么:

  Python学习路线

  关键要点如下:

  执行try子句直到遇到第一个异常。

  在except子句或异常处理程序中,您可以确定程序如何响应异常。

  您可以预见多个异常,并区分程序应该如何响应它们。

  避免使用空except子句。

  else子句

  在Python中,使用else子句,只有在没有异常的情况下,才能指示程序执行某个代码块。

  Python学习路线

  看一下下面的例子:

  Python学习路线

  如果您要在Linux系统上运行此代码,则输出结果如下所示:

  Python学习路线

  由于该程序没有遇到任何异常,因此执行了else子句。

  您还可以尝试在else子句中运行代码,并捕获可能的异常:

  Python学习路线

  如果您要在Linux上执行此代码,您将得到以下结果:

  Python学习路线

  从输出中,您可以看到linux_interaction()函数运行。 由于没有遇到任何异常,因此尝试打开file.log。 由于该文件不存在而无法打开,引发了FileNotFoundError异常

  使用finally语句做最后后清理

  想象一下,执行代码后,你总是必须执行某种操作来清理。 Python可以使用finally子句进行操作。

  Python学习路线

  来看看下面的例子:

  Python学习路线

  在前面的代码中,finally子句中的所有内容都将被执行。 即使在try或else子句中遇到异常,也不会影响finally子句的执行。 在Windows上运行以前的代码将输出以下内容:

  Python学习路线

  汇总

  在看到语法错误和异常之间的区别之后,您了解了在Python中抛出,捕获和处理异常的各种方法。 在本文中,您看到了以下选项:

  raise允许你随时抛出异常。

  assert使您能够验证是否符合某个条件,如果不符合则抛出异常。

  在try子句中,遇到异常之前的所有语句都会执行。

  except用于捕获和处理try子句中遇到的异常。

  else使你可以编写只有在try子句中没有遇到任何异常时才能运行的代码。

  finally使您能够执行应始终运行的代码段,无论是否遇到任何异常。

  希望这篇文章能够帮助您理解Python在处理异常时提供的基本工具。

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼段35号明宇金融广场19楼1903室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街紫东段35号明宇广场2306

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市成华区建设路10号万科钻石广场B座5楼

联系电话:15023458194

公交路线:建设路中(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

20016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56