Python和很多其他语言一样,支持异常处理。我们可以使用try-catch类似的形式捕获异常,处理异常,或者抛出异常。Python的异常命名惯例和Java语言有些不同, Java的异常一般以Exce
> 异常是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生异常。异常是Python的对象,表示一个错误。当Python脚本发生异常时,我们需要捕获并处理异常,否则程序会终止执行。
一、异常的种类 在python中不同的异常可以用不同的类型去标识,一个异常标识一种错误。
1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不用Python了)。
Python中的错误可以分为两种类型,即语法错误和异常。错误是程序中的问题,由于这些问题而导致程序停止执行。另一方面,当某些内部事件发生时,会引发异常,从而改变程序的正常流程。
在本文中,我们将讨论如何在适当的示例的帮助下使用 try、except 和 finally 语句处理 Python 中的异常。
调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理,防止程序终止。
和其他的语言一样,Python中也有异常和错误。在 Python 中,所有异常都是 BaseException 的类的实例。 今天我们来详细看一下Python中的异常和对他们的处理方式。
前面我们讲到的Python编程过程中,在可能出现异常的地方使用尝试语句,来正确的处理一些异常,可以保证程序不中断继续运行。
和其他的语言一样,Python中也有异常和错误。在 Python 中,所有异常都是 BaseException 的类的实例。今天我们来详细看一下Python中的异常和对他们的处理方式。
作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息。
上面的提示,是在IDE中运行时出现的,实际在线上运行脚本时,一般会用nohup 方式启动,输出内容会写入到nohup.out文件中,但这个文件里的内容可能非常多,很杂乱,不利于异常的排查。
当 Python 检测到一个错误时,解释器就无法继续执行下去,于是抛出提示信息,即为「异常」。程序出现了异常,就要做「异常处理」。
在前面介绍Python语法的过程中,我们已经接触到了解释器给的错误和异常,但并没有详细讲解它们。现在我们就全面的来学习Python是对语法错误等错误进行定义和处理的,这包括至少有两种可以区分的错误,它们是语法错误和异常。
教程地址:http://www.showmeai.tech/tutorials/56
异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。
一:语法错误syntax errors 熟悉语法! 二:异常 ①打印错误信息时,异常的类型作为异常的内置名显示,并以调用栈的形式显示具体信息 ②常见的异常: NameError、 ZeroDivisionError、 TypeError SyntaxError IndexError 索引超出序列范围 KeyError 请求一个不存在的字典关键字 IOError 输入输出错误 AttributeError 尝试访问未知的对象属性 三:异常处理 while True: try: x = int(input("Please enter a number: ")) break except ValueError: print("Oops! That was no valid number. Try again ") try语句按照如下方式工作; ①首先,执行try子句(在关键字try和关键字except之间的语句) ②如果没有异常发生,忽略except子句,try子句执行后结束。 ③如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。 ④如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。 最后执行 try 语句之后的代码。 ⑤如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。 ⑥一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。 最多只有一个分支会被执行。 ⑦一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组。 except (RuntimeError, TypeError, NameError): pass ⑧最后一个except子句可以忽略异常的名称,它将被当作通配符使用。 你可以使用这种方法打印一个错误信息,然后再次把异常抛出。 ⑨try except 语句还有一个可选的else子句,如果使用这个子句, 那么必须放在所有的except子句之后。 这个子句将在try子句没有发生任何异常的时候执行. 三:抛出异常 Python 使用 raise 语句抛出一个指定的异常 raise 唯一的一个参数指定了要被抛出的异常。 它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类) 四:用户自定义异常 可以通过创建一个新的异常类来拥有自己的异常。 异常类继承自 Exception 类,可以直接继承,或者间接继承。 当创建一个模块有可能抛出多种不同的异常时, 一种通常的做法是为这个包建立一个基础异常类, 五:定义清理行为 try: raise KeyboardInterrupt finanlly: print("dooo") 不管 try 子句里面有没有发生异常,finally 子句都会执行 如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出, 而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出 六:扩展------------->断言机制 assert 等价于布尔真的判定,不满足抛出异常AssertionError 用途: 防御性的程序 运行时需要逻辑检查 参考文献:《python使用断言的最佳时机》
python异常捕获,在刚开始学的时候,经常会遇到两种报错信息:语法错误和执行的异常。
作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。
语法错误,在运行前就可以发现。如果使用PyCharm会有红色波浪线提醒你,请检查拼写、缩进、符号等是否符合语法。(SyntaxError也是一种异常,但是因为它比较特殊,在运行前就可以检查出来,所以单独说。)
系列第四篇主要讲两方面,错误和异常以及模块。在编程时遇见错误信息在所难免,Python中会也有很多种错误信息,常见的两种就是语法错误和异常,这两个是完全不同的概念,下面就开始介绍一下这两个概念的相关知识。
本篇主要讲两方面,错误和异常以及模块。在编程时遇见错误信息在所难免,Python中会也有很多种错误信息,常见的两种就是语法错误和逻辑错误,逻辑错误的种类有很多,占据了异常中大部分位置,下面就开始介绍一下这两个概念的相关知识。
为了代码的稳定性、鲁棒性、异常处理就显得尤为重要了。通过异常处理,可以帮助开发人员更好的监控服务、定位问题,等等。那就让我们进入本章的学习吧
程序中的错误我们通常称为 bug ,工作中我们不仅需要改自己程序中的 bug ,还需要改别人程序中的 bug ,新项目有 bug 要改,老项目也有 bug 要改,可以说 bug 几乎贯穿一个程序员的职业生涯... 我们通常将 bug 分为 Error(错误) 和 Exception(异常),我们下面来具体学习下 Python 中的 错误 和 异常。
上面那句话因为缺少冒号:,导致解释器无法解释,于是报错。这个报错行为是由Python的语法分析器完成的,并且检测到了错误所在文件和行号(File "<stdin>", line 1),还以向上箭头^标识错误位置(后面缺少:),最后显示错误类型。
当Python检测到一个错误时,解释器就无法继续执行了,并且给出一个错误提示。比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然中断。这时候,就需要捕获处理它,否则程序会终止执行。
逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成、计算或者输出结果需要的过程无法执行等
定义:异常处理就是我们在写Python时,经常看到的报错信息,例如;NameError TypeError ValueError等,这些都是异常。
python异常: python在运行时错误称为异常 语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译。 逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成、计算或者出结果需要的过程无法执行等。 默认情况下:python脚本执行过程中出现异常后,脚本执行将被终止。 python 异常是一个对象,表示错误或意外的情况 在python检测到一个错误时,将触发一个异常: python可以通过异常传导机制传递一个异常对象,发出一个异常情况出现的信号。 程序员也可以在代码中托运触发异常 python异常也可以理解为:程序出现了错误,而在正常控制流以外采取的行为 第一阶段:解释器触发异常,此时当前程序流将被打断。 第二阶段:异常处理,如忽略非致命错误、减轻错误带来的影响等。 异常的功用 错误处理: python的默认处理:停止程序,打印错误消息 使用try语句处理异常,并从异常中恢复 事件通知: 用于发出有效状态信号 特殊情况处理: 无法调整代码去处理的场景 终止行为: try/finally语句可确保执行必需的结束处理机制 非常规控制流程: 异常是一种高级跳转(goto)机制 异常对象 python异常是内置的经典类exception的子类的实例 为了向后兼容,python还允许使用字符串或任何经典类实例 python2.5之后,exception是从BaseException继承的新式类(即exception的父类是BaseException类) python自身引发的所有异常都是Exception的子类的实例 大多的标准异常都是由StandardError派生的,其有3个抽象的子类 ArithmeticError:由于算术错误而引发的异常基类;包括:OverflowError、ZeroDivisionError、FloatingPorintError LookupError:容器在接收到一个无效的键或索引时引发的异常的基类;包括:IndexError、KeyError EnvironmentError:由于外部原因而导致的异常的基类;包括:IOError、OSError、WindowsError 标准异常类 AssertionError:断言语句失败 AttributeError:属性引用或赋值失败 FloatingPointError:浮点型运算失败 IOError:I/O操作失败 ImportError:import语句不能找到要导入的模块,或者不能找到该模块特别请求的名称。 IndentationError:解析器遇到了一个由于错误的缩进而引发的语法错误 IndexError:用来索引序列的整数超出了范围。 KeyError:用来索引映射的键不在映射中 KeyboardInterrupt:用户按了中断键(ctrl+c、ctrl+break、delete键) MemoryError:运算耗尽内存 NameError:引用了一个不存在的变量名 NotImplementedError:由抽象基类引发的异常,用于指示一个具体的子类必须覆盖一个方法 OSError:由模块os中的函数引发的异常,用来指示平台相关的错误 OverflowError:整数运算的结果太大导致溢出 SyntaxError:语法错误 SystemError:python解释器本身或某些扩展模块中的内部错误 TypeError:对某对象执行了不支持的操作 UnboundLocalError:引用未绑定值的本地变量 UnicodeError:在Unicode的字符串之间进行转换时发生的错误 ValueError:应用于某个对象的操作或函数,这个对象具有正确的类型,但确有不适当的值 WindowsError:模块OS中的函数引发的异常,用于指示与windowsSHUDR QAYK ZeroDivisionError:除数为0引发的异常 检测和处理异常: 异常通过try语句来检测:任何在try语句块中的代码都会被监测,以检查有无异常发生。 tr语句主要有两种形式: try-except:检测和处理异常 可以有多个e
软件异常(Exception),是指当程序出现错误后程序的处理方法,异常机制提供了程序正常退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器,如序列的下标越界、打开不存在的文件、空引用异常等,当异常被引发时,如果没有代码处理该异常,异常将被 Python 接收处理,当异常发生时 Python 解释器将输出一些相关的信息井终止程序的运行,以确保程序不会出现终止执行的情况.
我们看到,当条件为true时,断言成功,程序会继续向下执行。当条件为 false 触发异常,断言失败,程序报错
Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句和assert语句主动抛出。
Python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行
Python 提供了很多让使用者觉得舒服至极的功能特性,但是随着不断的深入学习和使用 Python,我发现其中存在着许多玄学的输出与之前预想的结果大相径庭,这个对于初学者来说难以理解,但是在理解它们以后又会觉得是这么的有意思,所以我准备了这个「有趣的 Python 特性」系列,写一些我碰到或看到的一些你所不知道的「奇葩」,这里面会涉及到在 Python2 和 Python3 中的异同,希望大家能从学习的过程中体会到真正的乐趣。
程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)
Doctest模块允许在文档字符串内嵌入注释以显示各种语句的期望行为,尤其是函数和方法的结构;此处的文档字符串看起来如同一个交互式shell会话;可用于测试文档是否与主程序保持同步,或基于文档对程序本身做测试。
Python 诞生之初就被誉为最容易上手的编程语言。进入火热的 AI 人工智能时代后,它也逐渐取代 Java,成为编程界的头牌语言。
在项目开发中,异常处理是不可或缺的。异常处理帮助人们debug,通过更加丰富的信息,让人们更容易找到bug的所在。异常处理还可以提高程序的容错性。
异常处理机制概述: 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。 就好比一个旅游景点,每到一个有可能出现问题情况的地方就会设置一个处理问题的处理点,不同的问题有不同的处理点,例如花粉过敏有花粉过敏的处理点,摔伤有摔伤的处理点等。程序也是如此会出现各种各样的错误,同理不同的异常错误有不同的异常错误处理方法。 各种编程语言在处理异常方面具有非常显著的不同点(错误检测与异常处理区别在于:错误检测是在正常的程序流中,处理不可预见问题的代码,例如一个调用操作未能成功结束)。某些编程语言有这样的函数:当输入存在非法数据时不能被安全地调用,或者返回值不能与异常进行有效的区别。例如,C语言中的atoi函数(ASCII串到整数的转换)在输入非法时可以返回0。在这种情况下编程者需要另外进行错误检测(可能通过某些辅助全局变量如C的errno),或进行输入检验(如通过正则表达式),或者共同使用这两种方法。 在python中我们可以通过try-except语句来捕捉异常,语法错误的话开发工具都会有提示的。
__name__ 显示模块名字,显示 __main__ 的时候意思是主模块,也就是第一次运行的模块/不是被导入的模块。
作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。
异常是一个事件,该事件会在程序执行过程中发生,将影响程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
程序员的一生中,错误几乎每天都在发生。在过去的一个时期, 错误要么对程序(可能还有机器)是致命的,要么产生一大堆无意义的输出,无法被其他计算机或程序识别,连程序员自己也可能搞不懂它的意义。一旦出现错误,程序就会终止执行,直到错误被修正,程序重新执行。所以,人们需要一个”柔和”的处理错误的方法,而不是终止程序。同时,程序本身也在不断发展,并不是每个错误都是致命的,即使错误发生,编译器或是在执行中的程序也可以提供更多更有用的诊断信息,帮助程序员尽快解决问题。然而,错误毕竟是错误,一般都是停止编译或执行后才能去
什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 异常处理: 本站Python教程会具体介绍。 断言(Assertions):本站Python教程会具体介绍。 Python标准
2、掌握raise和assert语句,会抛出自定义的异常,掌握with和as环境安装器的使用。
下表是python的异常列表,我们通常使用Exception即可,它包含了常规错误。
写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常。
在昨天的文章(零基础学习 Python 之错误 & 异常)中我介绍了 Python 中「错误 & 异常」的概念,如果在程序运行过程中抛出了异常,程序就会中止运行。这样的程序不是「健壮」的,健壮的程序应该不被各种异常所击倒。
在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!!
领取专属 10元无门槛券
手把手带您无忧上云