展开

关键词

7段代码带你玩转Python条件语句(附代码

如果条件表达式返回真值,执行操作语句1;如果返回假值,执行操作语句2。 if-else语句的形式很简单,通过条件判断的结果即可决定下一步的执行方向,具有两条分支。 异常是程序在正常流程控制以外采取的动作,当它被引发时,计算机将自动寻找异常处理程序,以帮助程序恢复正常运行。 要保证程序的正常运行,就需要排除错误,错误要么是语法上的,要么是逻辑上的。 逻辑错误难以预防,必须使用异常处理程序来应对。 计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。 try部分包含一个尝试执行的代码块,except部分是特定异常的处理对策,else部分则在程序运行正常时执行。 Out[8]: 键错误 代码清单⑥展示的try-except-else语句尝试查询不在dict中的键值对,从而引发异常

35530

Py异常处理

如果你编写了处理异常代码,程序将继续运行如果你未对异常进行处理,程序将停止,并且显示一个traceback,其中包含有关异常的报告。本文对Python异常处理进行讲解。 异常的发生 下面来看一种导致Python引发异常的简单错误。如果在数字中除以0,会发生异常。例子: try_except_test.py print(8/0) 编译运行: ? 如果try代码块中的代码运行起来没有问题,Python将跳过except代码块; 如果try代码块中的代码导致了错误,Python将查找查找这样的execpt代码块,并运行其中的代码,即其中的指定的错误与引发的错误相同 try-execpt-else代码块的工作原理大致如下: Python尝试执行try代码块中的代码块;只有可能引发异常代码才需要放在try语句中。 总结 这里要提请一下:try语句必须有一个except或一个finally,else是可选的,但是如果有else ,必须至少有一个except。

18930
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Python3之异常处理】 转

    KeyboardInterrupt Ctrl+C被按下 NameError 尝试访问一个没有申明的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) 二、异常处理 1.异常处理的定义 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) 如果捕捉成功进入另外一个处理分支 try: <语句> #运行别的代码 except <异常类型>: <语句> #如果在try部份引发了'name'异常 except <异常类型> as <数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生 ? 输出 内容写入文件成功 注: 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。(异常是由程序的错误引起的,语法上的错误跟异常处理无关,必须在程序运行前就修正) ?

    24320

    包教包会,7段代码带你玩转Python条件语句

    如果条件表达式返回真值,执行操作语句1;如果返回假值,执行操作语句2。 if-else语句的形式很简单,通过条件判断的结果即可决定下一步的执行方向,具有两条分支。 异常是程序在正常流程控制以外采取的动作,当它被引发时,计算机将自动寻找异常处理程序,以帮助程序恢复正常运行。 要保证程序的正常运行,就需要排除错误,错误要么是语法上的,要么是逻辑上的。 try部分包含一个尝试执行的代码块,except部分是特定异常的处理对策,else部分则在程序运行正常时执行。 代码清单⑤ try语句处理除零异常 In[6]: number = 0 # 以变量number作被除数,尝试运行除法操作 try: print('1.0 / number Out[8]: 键错误 代码清单⑥展示的try-except-else语句尝试查询不在dict中的键值对,从而引发异常

    17910

    【Python基础】09、Python异

    try中或者到进程的顶层 2、try-finally 语句 无论异常是否发生,finally子句都会执行 常用于定义必需进行的清理动作,如关闭文件或断开服务器连接 等 finally中的所有代码执行完毕后会继续向上一层引发异常 断言语句失败 AttributeError        属性引用或赋值失效 FloatingPointError         浮点型运算失败 IOError        I/O操作失败 ImportError assert condition[, expression] 如果condition条件满足,assert不做任何操作          如果condition条件不满足,assert使用expression 作为参数实例化AssertionError并引发结果 注意:        如果运行Python时使用了-O优化选项,assert将是一个空操作:编译器不为assert语句生成代码        运行 Python时不使用-O选项,__debug__内置变量为True, 否则其值为False assert语句相当于下面的代码 if __debug__:        if not condition

    18120

    Python异常

    [,reason]: //一捕获多个异常时要定义为元组 suite_ except: //空except语句用于捕获一切异常 suite_ else: else_suite 1.except 3.try-finally语句 无论异常是否发生,finally子句都会执行 常用于定义必需进行的清理动作,如关闭文件或断开服务器连接等 finally中的所有代码执行完毕后会继续向上一层引发异常 语法 浮点型运算失败 IOErrorI/O操作失败 ImportError import语句不能找到要导入的模块,或者不能找到模块特别请求的名称 IndentationError 解析器遇到了一个由于错误的缩进而引发的语法错误 assert语句用于在程序中引入调式代码 assert condition[,expression] 如果condition条件满足,assert不做任何操作 如果condition条件不满足,assert 使用expression作为参数实例化 AssertionError并引发结果实例 注意:如果运行Python时使用-O优化选项,assert将是一个空操作,编译器不为assert语句生成代码 运行Python

    43990

    Selenium异常集锦

    如果某些方法引发了检查的异常最好定义一个处理该特定异常的处理逻辑代码如果IME(输入法)的激活由于某种原因失败抛出此异常。 ImeNotAvailableException 如果IME(输入法)不可用,抛出此Selenium异常如果在不可编辑且不可重置的Web元素上尝试执行诸如清除元素之类的操作,可能会导致这种异常的出现。 ,对特定主机或远程Selenium服务的尝试失败时,将引发此Selenium异常

    35920

    Python学习笔记整理(十七)异常处理

    fetcher(x,5)        #尝试抓取第5个字符 ... except IndexError:      #如果发生异常【指出引发异常名称】 ...     ,也执行了finally语句中的代码 实际应用镇南关,try/except的组合可用于捕捉异常并从中恢复,而try/finally的组合很方便,可以确保无论try代码块内的 代码是否发生异常,终止行为一定会运行 ,并取得其额外数据 else:                如果没有引发异常,就运行 finally:            总是会运行代码块,无论是否发生异常 except:用在想不到异常情况 如果引发异常的是Exception1会执行hander1代码块,如果引发异常的是Exception2,则会执行hander2代码块。以此类推。 例如,如果try引入一个exceptname,X:语句,变量X就会被赋值为raise内所列出的额外的数据项,如果没有定义默认接受到 的就是特殊对象None。

    49610

    python Exception(异常

    :      捕捉任何列出的异常    except (name1, name2), value:   捕捉任何列出的异常,并取得其额外数据    else:                   如果没有引发异常 ,就运行    finally:        总是会运行代码块    语法:            try:            try_suite        except  Exception1 ,语法如下:        assert  condition[, expression]        说明:如果condition条件满足,assert不做任何操作;如果condition条件不满足 ,assert使用expression作为参数实例化AssertionError并引发结果实例(即生成一个自定义的断言异常对象)        注意:如果运行python时使用了-O优化选项,assert 将是一个空操作:编译器不为assert语句生成代码        运行python时不使用-O选项,__debug__内置变量为True,否则其值为False        assert语句相当于下面的代码

    44930

    python:yield总结

    从上面的伪代码的示例和运行结果的分析,我想你应该对 yield 比较清楚了。 如果你转为伪代码就很好理解。以上例来说明,转换后第一句是一个 put() 而不是wait_and_get(),因此第一执行只能返回,而不能接受数据。 如果你真的发送了一个非 None 的值,会引发一个 TypeError 的异常,让我们试一试: >>> f = g() >>> f.send(5) Traceback (most recent call GeneratorExit 异常如果 generator 引发了 GeneratorExit 或 StopIteration 异常关闭成功。 如果 generator 返回了一个值,引发 RuntimeError 异常如果是其它的异常则不作处理,相当于向上层繁殖,由上层代码来处理。

    19310

    一文教你读懂 Python 中的异常信息

    如果你是第一看到它,也许你不知道它在告诉你什么。 如果通过调用 greet()引发异常,则会打印一个简单的问候语。 只要提供了正确的输入,此代码就没有任何可能导致异常引发的错误。 简单理解就是在 except 中的代码出现了异常。所以导致了这种现象。 这个例子就是在第三循环的时候 person=1 然后字符串 hi 和1 不能进行拼接操作,然后再次引发异常。 Python 中有哪些常见的异常类型 在编程时,知道如何在程序引发异常时读取 Python 异常信息非常有用,如果再了解一些常见的异常类型那就更好了。 这是因为 SyntaxError 是在 Python 尝试解析代码引发的,实际上代码并没有执行。

    63010

    Python学习笔记:异常处理

    程序在运行时会遇到各种各样的环境,在编写程序时,不可能面面俱到,但我们可以充分利用Python的异常处理机制来避免发生异常时程序中止。 其基本形式为: try: [正常执行的语句] except: [失败后执行的语句] try语句调用上下文管理器,程序先执行try语句块中的语句代码如果其中发生任何异常执行except块中的语句代码 如果try语句块执行正常,退出上下文管理器并跳过except代码块。例如: ? 限定try except作用范围 上文中使用了try语句的一般形式,其在任何异常触发时都执行except代码块并给出预先定义的错误消息。如果将上文中的代码修改为: ? 无论是否引发异常,都将执行finally语句块。 手动触发异常 编写代码时,可能会决定在某些情况下想要手动引发异常。例如,假设定义一个函数dabs(x),它是绝对值函数abs(x)的导数。

    53520

    一篇文章带你了解JavaScript错误处理

    一、JavaScript try ... catch语句 try语句允许定义一个代码块,该代码块在执行时将进行错误测试,catch如果try块中发生错误,该语句允许您定义要执行的代码块。 try { //try_statements-尝试尝试的语句 }catch(err){ //catch_statements-处理错误的语句 } 完整代码: 例中,将“alert”写为“aaalert 在例中,如果传递任何非数字参数,getRectArea()将引发自定义错误: <script> function getRectArea(width, height) { if (isNaN(width 输入验证 如果值错误,引发异常(err)。catch语句捕获异常(err),并显示自定义错误消息。 SyntaxError 如果您的JavaScript代码中有任何语法问题,则会在运行引发SyntaxError。

    22030

    【Python】【天池龙珠计划笔记】Python中的异常处理

    异常处理 异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。 1. )失败 AttributeError:尝试访问未知的对象属性 EOFError:没有内建输入,到达EOF标记 EnvironmentError:操作系统异常的基类 IOError:输入/输出操作失败 OSError 最后执行try - except语句之后的代码如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。 try: 检测范围 except: 出现异常后的处理代码 else: 如果没有异常执行这块代码 使用except而不带任何异常类型,这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息 try: 检测范围 except(Exception1[, Exception2[,…ExceptionN]]]): 发生以上多个异常中的一个,执行这块代码 else: 如果没有异常执行这块代码

    12210

    编写高质量代码改善C#程序的157个建议

    其实,这里存在认识上的误区,因为正常控制流程下的代码运行并不会出现问题,只有引发异常时才会带来效率问题。基于这一点,很多开发者已经达成共识:不应将异常机制用于正常控制流中。 但是如果执行失败了却没有那么简单,因为我们需要将导致执行失败的原因通知调用者。抛出异常和返回错误代码都是用来通知调用者的手段。    然后仅仅呈现失败信息就可以了吗?我们来看看这样一种情况:给失败通知增加稍微复杂一点的功能。   如果本地保存失败,要完成“通知运行本段代码的客户机管理员”的功能。 不要总是尝试去捕获异常引发异常,而应该允许异常向调用堆栈往上传播。 那么到底应该在什么情况下引发异常呢? 第一种情况 如果运行代码后会造成内存泄漏、资源不可用,或者应用程序状态不可恢复,引发异常。 第二种情况 在捕获异常的时候,如果需要包装一些更有用的信息, 引发异常

    42931

    Python学习笔记总结(四):异常处理

    ,并取得其额外数据 else:                如果没有引发异常,就运行 finally:            总是会运行代码块,无论是否发生异常 空的except分句会捕捉任何程序执行时所引发的而未被捕捉到的异常 else分句,让逻辑封明确 4、try/finally分句 python先运行try: 下的代码块: 如果try代码运行时没有异常发生,Python会跳至finally代码块。 如果try代码运行时有发生异常,Python依然会回来运行finally代码块,但是接着会把异常向上传递到较高的try语句或顶层的默认处理器。程序不会在try语句继续执行。         如果引发异常 的是Exception1会执行hander1代码块,如果引发异常的是Exception2,则会执行hander2代码块。以此类推。 例如,如果try引入一个exceptname,X:语句,变量X就会被赋值为raise内所列出的额外的数据项,如果没有定义默认接受到 的就是特殊对象None。

    21210

    正则表达式的回溯

    DFA从匹配文本入手,从左到右,每个字符不会匹配两,它的时间复杂度是多项式的,所以通常情况下,它的速度更快,但支持的特性很少,不支持捕获组、各种引用等等;而NFA则是从正则表达式入手,不断读入字符,尝试是否匹配当前正则 ,不匹配吐出字符重新尝试,通常它的速度比较慢,最优时间复杂度为多项式的,最差情况为指数级的。 如果有逗号而max被省略了,表示max没有限制;如果逗号和max都被省略了,表示重复min。 默认情况下,这个几个特殊字符都是贪婪的,也就是说,它会根据前导字符去匹配尽可能多的内容。 在上例中,如果将正则换为 ab{1,3}?c 匹配过程变成了下面这样(橙色为匹配,黄色为不匹配), ? 由此可见,在非贪婪模式下,第2步正则中的b{1,3}? 如果将正则表达式中的加号(+)去掉,那么这个文本整体就是匹配的了。 把以上三种模式的表达式列出如下, 贪婪 懒惰 独占 X? X?? X?+ X* X*? X*+ X+ X+?

    39210

    【Python环境】12道 Python面试题总结

    try…except…except…[else…][finally…] 执行try下的语句,如果引发异常执行过程会跳到except语句。 对每个except分支顺序尝试执行,如果引发异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,异常会传递到下一个调用本代码的最高层try代码中。 try下的语句正常执行,执行else块代码如果发生异常,就不会执行 如果存在finally语句,最后总是会执行。 7、Python里面match()和search()的区别? 如果一个变量的名字没有在当前类的字典中发现,将搜索祖先类(比如父类)直到被引用的变量名被找到(如果这个被引用的变量名既没有在自己所在的类又没有在祖先类中找到,会引发一个 AttributeError 异常 一个讨厌的小问题是它会导致出现 bug ,并且这个问题是难以追踪的,因为它在运行时不会引发错误。 11、以下的代码的输出将是什么? 说出你的答案并解释? ?

    35650

    12道 Python面试题总结

    try…except…except…[else…][finally…] 执行try下的语句,如果引发异常执行过程会跳到except语句。 对每个except分支顺序尝试执行,如果引发异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,异常会传递到下一个调用本代码的最高层try代码中。 try下的语句正常执行,执行else块代码如果发生异常,就不会执行 如果存在finally语句,最后总是会执行。 7、Python里面match()和search()的区别? 如果一个变量的名字没有在当前类的字典中发现,将搜索祖先类(比如父类)直到被引用的变量名被找到(如果这个被引用的变量名既没有在自己所在的类又没有在祖先类中找到,会引发一个 AttributeError 异常 一个讨厌的小问题是它会导致出现 bug ,并且这个问题是难以追踪的,因为它在运行时不会引发错误。 11、以下的代码的输出将是什么? 说出你的答案并解释? ?

    67790

    C++基础 指针使用注意

    如果将free语句注释掉,再次调试运行至cout语句处,在任务管理器可以看到内存始终占用较多。如果此时在cout语句后还要大量代码需要分配内存,可能就会内存分配失败造成程序异常。 警惕NULL指针 内存分配失败导致的NULL指针 上面程序malloc分配内存的大小需根据自己实际调整,如果太大会造成内存分配失败 直接运行(非调试)会有类似如下结果,程序没有正常结束: p = 0000000000000000 调试运行则会引发异常: Exception thrown at 0x00007FF6216F5B96 in 指针.exe: 0xC0000005: Access violation writing location 调试运行,会引发写入异常,因为p非空,但无法写操作: Exception thrown at 0x00007FF64AC66BF5 in 指针.exe: 0xC0000005: Access violation 建议:不要在函数中返回局部变量的地址,如果必须返回局部变量的地址,局部变量需申明为static类型(static变量的生存期是整个程序运行期间) 其它异常导致的内存无法释放 即使在malloc/new

    18110

    扫码关注云+社区

    领取腾讯云代金券