精华内容
下载资源
问答
  • Python 异常处理的实例详解 与许多面向对象语言一样,Python 具有异常处理,通过使用 try…except 块来实现。 Note: Python v s. Java 的异常处理 Python 使用 try…except 来处理异常,使用 raise 来引发异常。...
  • 异常处理在项目开发中,异常处理是不可或缺的。异常处理帮助人们debug,通过更加丰富的信息,让人们更容易找到bug的所在。异常处理还可以提高程序的容错性。我们之前在讲循环对象的时候,曾提到一个StopIteration的...

    异常处理

    在项目开发中,异常处理是不可或缺的。异常处理帮助人们debug,通过更加丰富的信息,让人们更容易找到bug的所在。异常处理还可以提高程序的容错性。

    我们之前在讲循环对象的时候,曾提到一个StopIteration的异常,该异常是在循环对象穷尽所有元素时的报错。

    我们以它为例,来说明基本的异常处理。

    一个包含异常的程序:

    7c1581f209ce4939f2c5839243356406.gif

    re = iter(range(5))for i in range(100):printre.next()print 'HaHaHaHa'

    7c1581f209ce4939f2c5839243356406.gif

    首先,我们定义了一个循环对象re,该循环对象将进行5次循环,每次使用序列的一个元素。

    在随后的for循环中,我们手工调用next()函数。当循环进行到第6次的时候,re.next()不会再返回元素,而是抛出(raise)StopIteration的异常。整个程序将会中断。

    我们可以修改以上异常程序,直到完美的没有bug。但另一方面,如果我们在写程序的时候,知道这里可能犯错以及可能的犯错类型,我们可以针对该异常类型定义好”应急预案“。

    7c1581f209ce4939f2c5839243356406.gif

    re = iter(range(5))try:for i in range(100):printre.next()exceptStopIteration:print 'here is end',iprint 'HaHaHaHa'

    7c1581f209ce4939f2c5839243356406.gif

    在try程序段中,我们放入容易犯错的部分。我们可以跟上except,来说明如果在try部分的语句发生StopIteration时,程序该做的事情。如果没有发生异常,则except部分被跳过。

    随后,程序将继续运行,而不是彻底中断。

    完整的语法结构如下:

    7c1581f209ce4939f2c5839243356406.gif

    try:

    ...exceptexception1:

    ...exceptexception2:

    ...

    except:

    ...else:

    ...finally:

    ...

    7c1581f209ce4939f2c5839243356406.gif

    如果try中有异常发生时,将执行异常的归属,执行except。异常层层比较,看是否是exception1, exception2...,直到找到其归属,执行相应的except中的语句。如果except后面没有任何参数,那么表示所有的exception都交给这段程序处理。比如:

    7c1581f209ce4939f2c5839243356406.gif

    try:print(a*2)exceptTypeError:print("TypeError")except:print("Not Type Error & Error noted")

    7c1581f209ce4939f2c5839243356406.gif

    由于a没有定义,所以是NameError。异常最终被except:部分的程序捕捉。

    如果无法将异常交给合适的对象,异常将继续向上层抛出,直到被捕捉或者造成主程序报错。比如下面的程序

    7c1581f209ce4939f2c5839243356406.gif

    deftest_func():try:

    m= 1/0exceptNameError:print("Catch NameError in the sub-function")try:

    test_func()exceptZeroDivisionError:print("Catch error in the main program")

    7c1581f209ce4939f2c5839243356406.gif

    子程序的try...except...结构无法处理相应的除以0的错误,所以错误被抛给上层的主程序。

    如果try中没有异常,那么except部分将跳过,执行else中的语句。

    finally是无论是否有异常,最后都要做的一些事情。

    流程如下,

    try->异常->except->finally

    try->无异常->else->finally

    抛出异常

    我们也可以自己写一个抛出异常的例子:

    print 'Lalala'

    raiseStopIterationprint 'Hahaha'

    这个例子不具备任何实际意义。只是为了说明raise语句的作用。

    StopIteration是一个类。抛出异常时,会自动有一个中间环节,就是生成StopIteration的一个对象。Python实际上抛出的,是这个对象。当然,也可以自行生成对象:

    raise StopIteration()

    总结

    try: ... except exception: ... else: ... finally: ...

    raise exception

    如果你喜欢这篇文章,欢迎推荐。

    技术推动进步,分享促进社区。

    展开全文
  • Python 异常处理实例详解来源:中文源码网浏览: 次日期:2018年9月2日【下载文档:Python 异常处理实例详解.txt】(友情提示:右键点上行txt文档名->目标另存为)Python 异常处理实例详解 一、什么是异常?异常即是...

    Python 异常处理实例详解

    来源:中文源码网    浏览: 次    日期:2018年9月2日

    【下载文档:  Python 异常处理实例详解.txt 】

    (友情提示:右键点上行txt文档名->目标另存为)

    Python 异常处理实例详解 一、什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。二、异常处理捕捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。

    异常语法:以下为简单的try....except...else的语法:复制代码 代码如下:try: #运行别的代码except : #如果在try部份引发了'name'异常except ,: #如果引发了'name'异常,获得附加的数据else: #如果没有异常发生try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

    如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

    异常处理实例1:下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,且并未发生异常:复制代码 代码如下:#!/usr/bin/python

    try: fh = open("testfile", "w") fh.write("This is my test file for exception handling!!")except IOError: print "Error: can\'t find file or read data"else: print "Written content in the file successfully" fh.close()以上程序输出结果:复制代码 代码如下:Written content in the file successfully异常处理实例2:下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,但文件没有写入权限,发生了异常:复制代码 代码如下:#!/usr/bin/python

    try: fh = open("testfile", "w") fh.write("This is my test file for exception handling!!")except IOError: print "Error: can\'t find file or read data"else: print "Written content in the file successfully"以上程序输出结果:复制代码 代码如下:Error: can't find file or read data

    三、使用except而不带任何异常类型

    你可以不带任何异常类型使用except,如下实例:复制代码 代码如下:try: You do your operations here; ......................except: If there is any exception, then execute this block. ......................else: If there is no exception then execute this block. 以上方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。四、使用except而带多种异常类型你也可以使用相同的except语句来处理多个异常信息,如下所示:复制代码 代码如下:try: You do your operations here; ......................except(Exception1[, Exception2[,...ExceptionN]]]): If there is any exception from the given exception list, then execute this block. ......................else: If there is no exception then execute this block. 五、try-finally 语句try-finally 语句无论是否发生异常都将执行最后的代码。复制代码 代码如下:try:finally: #退出try时总会执行raise注意:你可以使用except语句或者finally语句,但是两者不能同时使用。else语句也不能与finally语句同时使用

    try-finally用法实例:复制代码 代码如下:#!/usr/bin/python

    try: fh = open("testfile", "w") fh.write("This is my test file for exception handling!!")finally: print "Error: can\'t find file or read data"如果打开的文件没有可写权限,输出如下所示:复制代码 代码如下:Error: can't find file or read data同样的例子也可以写成如下方式:复制代码 代码如下:#!/usr/bin/python

    try: fh = open("testfile", "w") try: fh.write("This is my test file for exception handling!!") finally: print "Going to close the file" fh.close()except IOError: print "Error: can\'t find file or read data"当在try块中抛出一个异常,立即执行finally块代码。finally块中的所有语句执行后,异常被再次提出,并执行except块代码。参数的内容不同于异常。

    六、异常的参数一个异常可以带上参数,可作为输出的异常信息参数。你可以通过except语句来捕获异常的参数,如下所示:复制代码 代码如下:try: You do your operations here; ......................except ExceptionType, Argument: You can print value of Argument here...变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。元组通常包含错误字符串,错误数字,错误位置。以下为单个异常的实例:复制代码 代码如下:#!/usr/bin/python

    # Define a function here.def temp_convert(var): try: return int(var) except ValueError, Argument: print "The argument does not contain numbers\n", Argument

    # Call above function here.temp_convert("xyz");以上程序执行结果如下:复制代码 代码如下:The argument does not contain numbersinvalid literal for int() with base 10: 'xyz'使用raise触发异常:我们可以使用raise语句自己触发异常

    raise语法格式如下:复制代码 代码如下:raise [Exception [, args [, traceback]]]语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。raise用法实例:一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。定义一个异常非常简单,如下所示:复制代码 代码如下:def functionName( level ): if level < 1: raise "Invalid level!", level # The code below to this would not be executed # if we raise the exception注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。例如我们捕获以上异常,"except"语句如下所示:复制代码 代码如下:try: Business Logic here...except "Invalid level!": Exception handling here...else: Rest of the code here...

    七、用户自定义异常实例通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。复制代码 代码如下:class Networkerror(RuntimeError): def __init__(self, arg): self.args = arg在你定义以上类后,你可以触发该异常,如下所示:复制代码 代码如下:try: raise Networkerror("Bad hostname")except Networkerror,e: print e.args

    附:python标准异常BaseExceptiona:所有异常的基类SystemExitb python:解释器请求退出KeyboardInterruptc:用户中断执行(通常是输入^C)Exceptiond:常规错误的基类StopIteratione:迭代器没有更多的值GeneratorExita:生成器(generator)发生异常来通知退出SystemExith:Python 解释器请求退出StandardErrorg:所有的内建标准异常的基类ArithmeticErrord:所有数值计算错误的基类FloatingPointErrord:浮点计算错误OverflowError:数值运算超出最大限制ZeroDivisionError:除(或取模)零 (所有数据类型)AssertionErrord:断言语句失败AttributeError:对象没有这个属性EOFError:没有内建输入,到达EOF 标记EnvironmentErrord:操作系统错误的基类IOError:输入/输出操作失败OSErrord:操作系统错误WindowsErrorh Windows:系统调用失败ImportError:导入模块/对象失败KeyboardInterruptf:用户中断执行(通常是输入^C)LookupErrord:无效数据查询的基类IndexError:序列中没有没有此索引(index)KeyError:映射中没有这个键MemoryError:内存溢出错误(对于Python 解释器不是致命的)NameError:未声明/初始化对象 (没有属性)UnboundLocalErrorh:访问未初始化的本地变量ReferenceErrore:弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError:一般的运行时错误NotImplementedErrord:尚未实现的方法SyntaxError:Python 语法错误IndentationErrorg:缩进错误TabErrorg:Tab 和空格混用SystemError 一般的解释器系统错误TypeError:对类型无效的操作ValueError:传入无效的参数UnicodeErrorh:Unicode 相关的错误UnicodeDecodeErrori:Unicode 解码时的错误UnicodeEncodeErrori:Unicode 编码时错误UnicodeTranslateErrorf:Unicode 转换时错误Warningj:警告的基类DeprecationWarningj:关于被弃用的特征的警告FutureWarningi:关于构造将来语义会有改变的警告OverflowWarningk:旧的关于自动提升为长整型(long)的警告PendingDeprecationWarningi:关于特性将会被废弃的警告RuntimeWarningj:可疑的运行时行为(runtime behavior)的警告SyntaxWarningj:可疑的语法的警告UserWarningj:用户代码生成的警告

    亲,试试微信扫码分享本页! *^_^*

    展开全文
  • Python 异常处理

    2021-02-10 11:27:02
    异常处理语法:try:#目标代码except错误类型:#出错后执行的代码示例:try:list= [1, 2, 3]list[3]exceptIndexError:print('出错了!')输出结果:出错了!多个异常的示例:try:a= input() #程序只会运行到第一个错误,...

    异常处理语法:

    try:#目标代码

    except错误类型:#出错后执行的代码

    示例:

    try:

    list= [1, 2, 3]

    list[3]exceptIndexError:print('出错了!')

    输出结果:

    出错了!

    多个异常的示例:

    try:

    a= input() #程序只会运行到第一个错误,之后的不执行

    a()

    list1= [1, 2, 3]

    list1[3]

    open('a.txt')except IndexError as e: #捕捉 IndexError 类型的错误

    print('出错了!', e) #捕捉到之后执行

    exceptFileNotFoundError as e:print('没有这个文件!', e)except Exception as e: #Exception 可以捕捉到所有类型的错误

    print('未知错误:', e)else: #如果程序没有报错,执行 else

    print('一切正常')finally: #无论程序有没有错都会执行 finally

    print('运行结束')

    程序有异常的输出:

    未知错误: 'str' object is not callable

    运行结束

    程序没有异常的输出:

    一切正常

    运行结束

    自定义异常:

    示例:

    classUserError(Exception):def __init__(self, msg):

    self.msg=msgdef __str__(self):returnself.msgtry:raise UserError('自定义错误')exceptUserError as e:print(e)

    输出结果:

    自定义错误

    常见异常:

    AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x

    IOError 输入/输出异常;基本上是无法打开文件

    ImportError 无法引入模块或包;基本上是路径问题或名称错误

    IndentationError 语法错误(的子类) ;代码没有正确对齐

    IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

    KeyError 试图访问字典里不存在的键

    KeyboardInterrupt Ctrl+C被按下

    NameError 使用一个还未被赋予对象的变量

    SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)

    TypeError 传入对象类型与要求的不符合

    UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,

    导致你以为正在访问它

    ValueError 传入一个调用者不期望的值,即使值的类型是正确的

    其他异常:

    ArithmeticError

    AssertionError

    AttributeError

    BaseException

    BufferError

    BytesWarning

    DeprecationWarning

    EnvironmentError

    EOFError

    Exception

    FloatingPointError

    FutureWarning

    GeneratorExit

    ImportError

    ImportWarning

    IndentationError

    IndexError

    IOError

    KeyboardInterrupt

    KeyError

    LookupError

    MemoryError

    NameError

    NotImplementedError

    OSError

    OverflowError

    PendingDeprecationWarning

    ReferenceError

    RuntimeError

    RuntimeWarning

    StandardError

    StopIteration

    SyntaxError

    SyntaxWarning

    SystemError

    SystemExit

    TabError

    TypeError

    UnboundLocalError

    UnicodeDecodeError

    UnicodeEncodeError

    UnicodeError

    UnicodeTranslateError

    UnicodeWarning

    UserWarning

    ValueError

    Warning

    ZeroDivisionError

    展开全文
  • Python异常处理总结

    2021-01-13 17:45:22
    这篇文章主要介绍了Python异常处理总结,需要的朋友可以参考下本文较为详细的罗列了Python常见的异常处理,供大家参考,具体如下:1.入门读物 2.进阶读物 3.Web框架 4.爬虫开发 5.图形图像6.数据分析 7.机器学习等等...

    这篇文章主要介绍了Python异常处理总结,需要的朋友可以参考下

    本文较为详细的罗列了Python常见的异常处理,供大家参考,具体如下:

    1.入门读物 2.进阶读物 3.Web框架 4.爬虫开发 5.图形图像

    6.数据分析 7.机器学习等等资料!需要的可以加QQ群:832339352!进群免费获取!抛出异常和自定义异常

    Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。

    ①.raise 语句

    Python中的raise 关键字用于引发一个异常,基本上和C#和Java中的throw关键字相同,如下所示:

    raise 语句

    raise关键字后面是抛出是一个通用的异常类型(Exception),一般来说抛出的异常越详细越好,Python在exceptions模块内建了很多的异常类型,通过使用dir函数来查看exceptions中的异常类型,如下:

    raise 语句

    传递异常

    捕捉到了异常,但是又想重新引发它(传递异常),可以使用不带参数的raise语句即可:

    捕捉异常

    ②.自定义异常类型

    Python中也可以自定义自己的特殊类型的异常,只需要要从Exception类继承(直接或间接)即可:

    自定义异常类型

    2. 捕捉异常

    和C#中的try/catch类似,Python中使用try/except关键字来捕捉异常,如下:

    捕捉异常

    ①.捕捉多个异常

    在一个except语句只捕捉其后声明的异常类型,如果可能会抛出的是其他类型的异常就需要再增加一个except语句了,或者也可以指定一个更通用的异常类型比如:Exception,如下:

    捕捉多个异常

    为了捕获多个异常,除了声明多个except语句之外,还可以在一个except语句之后将多个异常作为元组列出来即可:

    捕捉多个异常

    ②.获取异常信息

    每个异常都会有一些异常信息,一般情况下我们应该把这些异常信息记录下来:

    获取异常信息

    3. finally子句

    finally子句和try子句联合使用但是和except语句不同,finally不管try子句内部是否有异常发生,都会执行finally子句内的代码。所有一般情况下,finally自己常常用于关闭文件或者在Socket中。

    finally子句

    1.入门读物 2.进阶读物 3.Web框架 4.爬虫开发 5.图形图像

    6.数据分析 7.机器学习等等资料!需要的可以加QQ群:832339352!进群免费获取!

    展开全文
  • 本文实例讲述了Python异常处理操作。分享给大家供大家参考,具体如下:一、异常处理的引入>>>whileTrue:try:x = int(input("Please enter a number: "))breakexceptValueError:print("Oops! That was no valid ...
  • Python异常处理

    2021-03-06 04:11:45
    问题描述大家在使用python语言写...解决方案首先我们要了解异常才能处理异常那我们来就说一说异常的定义:程序运行过程中出现的错误或遇到的意外情况其次是错误的类型分别有:语法错误、运行错误、逻辑错误而我们通...
  • I'm writing a python program the accesses a database. I want to catch three types of exceptions when I make a http request. Timeouts, network errors, and ...
  • 一、异常概念Python在执行代码之前,会进行语法检查,如果语法出错了,会抛出语法错误(SyntaxError)。Python程序运行期间检测到的错误被称为异常。内置异常:BaseException:所有异常的基类错误类异常(发生之后,...
  • 异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值。常用检测方法3σ原则和箱型图。其中,3σ原则只适用服从正态分布的数据。在3σ原则下,异常值被定义为观察值和平均值的偏差超过3倍标准差的值...
  • 总结:Python中的异常处理

    千次阅读 2021-01-29 05:33:45
    异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题。在Python中,和不部分高级语言一样,使用了try/except/finally语句块来处理...
  • 尽管您的程序可能不是这种情况,但是鉴于没有通用的解决方案允许在Python中进行此操作,因此使用异常处理基本上不可能实现您想做的事情.但是,SIGINT信号的默认处理程序是引发KeyboardInterrupt异常-如果您可以劫持该...
  • 以我自己的职业经历来说,我情愿自己去针对一...之所以会定位问题原因难,最根本的是代码编写者缺少的是“异常处理思维。1.语法格式我们开始从Python异常语法格式开始吧。从上图可以看到以下信息:四个关键词:t...
  • python中的异常处理

    2021-01-11 21:29:12
    而 except 语句 是关键,我们 try 捕获了代码段 ...第10章 Python异常处理案例导入:小周是大数据专业的学生,他正在进行一个系统的程序设计。为了让用户更满意他的系统, 老师建议他采用异常处理来增加系统的健壮性,.....
  • 主要介绍了新手常见Python错误及异常解决处理方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 原标题:Python 异常处理知识点汇总,五分钟就能学会异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题。在Python中,和不分高级...
  • 输入整数,并对整数进行乘方运算。如果输入不是整数,程序自动提醒,不是整数。 代码如下: try: num=eval(input("请输入一个整数:")) print(num**2) except: print("输入不是整数") ......
  • 1、异常处理语句 1.1、try...except...else 说明 (1)把可能产生的异常代码放在try语句块中,把处理结果放在except语句块中。 (2)这样,当try语句块中的代码出现错误时。就会执行except语句块中的代码。 (3)...
  • 文章目录背景方案设计ThreadPool类使用方法简单设计一个会抛出异常的函数最终方案 背景 随着数据量增多,业务中处理该类数据的模块需要从串行处理升级成多线程处理。 原流程中只有部分流程需要多线程优化,而多线程...
  • 目录1、异常处理意义2、python常见异常3、python常见异常处理方法3.1 使用if判断式3.2 try...except3.3 try-finally 语句3.4 主动触发异常 1、异常处理意义 程序异常的意义在于当某个异常被触发后,因为存在异常处理...
  • 首先,Python 完整的异常处理语法结构如下:try:#业务实现代码except Exception1 as e:#异常处理块1...except Exception2 as e:#异常处理块2...#可以有多个 except...else:#正常处理块finally :#资源回收块......
  • Python异常处理实例

    千次阅读 2018-01-26 11:01:47
    ######### File is too big, read file line by line(if file is small, we can use pandas) def get_valid_inventory(src_dir,tmp_file,des_dir): if not os.path.exists(des_dir): os.mkdir(des_dir)
  • 引言我们用什么语言写项目,其实都会出错,错误有很多种,有我们写的代码本身就有问题,这个时候属于编译错误,有的代码运行的时候有问题,这个属于运行时异常,python其实也有一套自己的异常处理机制。今天我们来...
  • 文章目录代码出现异常怎么看待Python异常处理机制 代码出现异常怎么看待 开始之前我们先休息一下,久坐成疾!而且以后还可能犯老年痴呆(我还年轻),接下来我们先讲上3个笑话: 1、在公司听到过一句最惨绝人寰...
  • Python是做自动化工作首选的一门语言,与更复杂的语言相比,Python 非常便于快速学习、语法很少,具有良好的 可读性,即使测试工程师们没有...本文主要介绍python异常处理操作,包括异常及异常处理的概念、try/ex...
  • python_异常处理

    千次阅读 2021-02-10 21:43:26
    如果python解释器遇到一个错误,会停止程序的运行,并且提示一些错误信息,这就是异常程序停止执行并且提示错误信息后这个动作,我们通常称之为:抛出异常程序开发时,很难将所有的特殊情况都处理的面面俱到,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,340
精华内容 28,536
关键字:

python异常处理案例

python 订阅