第7章 异常处理和断言
- 格式:ppt
- 大小:437.50 KB
- 文档页数:2
异常处理的方法及常见错误一、引言在编写程序的过程中,我们难免会遇到各种意料之外的错误情况。
例如,网络连接中断、用户提供无效的输入、文件读取失败等等。
这有时可能会导致应用程序崩溃或者产生错误结果,影响程序的执行效果和用户体验。
为此,异常处理显得尤为重要。
异常处理是一种有效的、规范的、灵活的代码结构,能够让程序在遇到错误情况时以一种清晰的方式进行处理,从而提高应用程序的可靠性和健壮性。
本文将介绍异常处理的方法及常见错误,在分析各种异常处理的方法以及常见错误之后,让读者更深入的了解异常处理的概念,为读者介绍异常处理的几种常见方法、异常处理的原则、如何确定异常类型和异常的处理方法等知识点。
二、异常处理的方法通常情况下,我们将异常分为两类:编译时异常和运行时异常。
编译时异常通常是由语言本身的规范造成的,例如,不正确的文件名、无效的数据类型等。
而运行时异常则通常由程序的运行环境和输入数据的错误造成的,例如,数组越界、除零错误等等。
基于这两种常见的异常类型,下面将介绍几种常见的异常处理方法:1. try-catch语句try-catch语句是一种非常常见的异常处理方法,在程序运行时,如果try块中出现了异常的情况,程序不会崩溃,而是自动跳转到catch块中进行异常处理。
下面来看一个简单的例子:try {//这里是可能出现异常的代码块} catch (ExceptionType e) {//异常处理代码}在这个例子中,try语句块是一段可能抛出异常的代码。
如果在执行try块时发生了错误,就会跳转到catch块中,其中ExceptionType 代表抛出的异常类型,e是一个指向异常对象的指针。
catch块中的代码则是用来具体处理异常的逻辑。
需要注意的是,在使用try-catch语句处理异常时,我们需要确定具体的异常类型,并在catch块中进行相应的处理。
同时,在使用try-catch语句块的过程中,要注意异常处理代码的构成,尽量避免让异常处理代码过于冗余或过于细节化。
异常处理相关术语
异常处理是编程中用于处理程序运行时出现意外情况的一种机制。
以下是与异常处理相关的一些常见术语:
1. 异常:程序执行过程中发生的意外情况或错误,导致程序无法正常执行。
异常可以是语法错误、运行时错误、文件读取错误等。
2. 异常类:用于表示异常的类,每个异常都是异常类的一个实例。
常见的编程语言通常提供内置的异常类,也可以自定义异常类。
3. 异常抛出:当程序中发生异常时,通过 throw 关键字将异常对象抛出,以通知调用方有异常发生。
4. 异常捕获:使用 try-catch 块来捕获异常。
在 try 块中的代码如果发生异常,会跳转到对应的 catch 块中执行。
5. 异常传播:当一个函数内部发生异常,如果没有在该函数内捕获并处理,异常会被传递到函数的调用方,直到被捕获或程序终止。
6. 异常处理策略:指在程序中如何处理异常,可以选择捕获并处理异常、继续向上抛出异常、记录异常信息等。
7. 异常堆栈跟踪:当异常发生时,会生成一个包含异常信息和调用链的堆栈跟踪,用于定位异常发生的位置和原因。
8. 断言:一种用于检查程序中的假设和不变量的语句,如果断言的条件为假,程序会抛出异常。
9. 异常规范:在函数声明中指定函数可能抛出的异常类型,用于告诉调用方该函数可能引发的异常。
10. 调试:在开发过程中使用调试工具来帮助查找和修复异常。
了解这些术语对于理解异常处理的概念和机制非常重要,它们是编程中处理异常情况的基础。
Java中的异常处理和断言机制在软件开发过程中,我们常常会遇到各种错误和异常情况。
为了保证程序的稳定性和可靠性,Java提供了异常处理和断言机制。
异常处理是一种处理异常情况的方式。
在程序执行过程中,如果出现了异常,系统会抛出相应的异常对象。
我们可以使用try-catch 语句块来捕获并处理这些异常。
try语句块是重点执行的代码块,catch语句块用于捕获并处理指定类型的异常。
如果try语句块中的代码发生了异常,系统会跳过try块中后续的代码,然后进入catch块进行异常处理。
在catch块中,我们可以根据实际需求进行处理,例如输出异常信息、记录日志、回滚事务等。
同时,Java还提供了finally块,用于定义无论是否出现异常,都需要执行的代码。
除了try-catch语句块,我们也可以使用throws关键字来声明异常。
当方法的实现可能会抛出某些异常时,我们可以使用throws关键字在方法签名中声明这些异常。
这样,在调用该方法时,我们必须要么使用try-catch语句块来捕获这些异常,要么在调用方法的上一级方法中继续使用throws关键字声明这些异常。
这种方法使得异常的处理更加灵活,可以将异常的处理逻辑推迟到调用方。
断言机制是一种用于调试和测试的机制。
断言是一种声明,用于在程序中插入一些检查语句,以确保程序的正确性。
在Java中,我们可以使用assert关键字来定义断言。
断言语句由关键字assert、一个boolean表达式和一个可选的消息组成。
当断言语句的结果为false时,系统会抛出一个AssertionError异常。
断言主要用于进行一些前提条件的检查,用于确保程序的正确性,并在出现错误时及早发现和处理。
在调试和测试阶段,我们可以开启断言功能,确保程序按照我们预期的方式执行。
而在生产环境中,我们可以关闭断言功能,从而提高程序的性能。
总之,在Java中,异常处理和断言机制是保证程序稳定性和可靠性的重要工具。
自动化测试中的异常断言与异常处理异常断言和异常处理在自动化测试中扮演着重要的角色。
通过对异常情况的正确处理,能够保证测试的精确性和准确性,提高软件质量。
本文将介绍自动化测试中的异常断言和异常处理的概念、原则以及常见的应用场景。
一、异常断言的概念与原则在自动化测试中,异常断言是指对测试过程中可能出现的异常情况进行检测和验证。
异常断言主要用来判断程序是否按照预期的方式运行,是否发生了异常或错误。
以下是几个异常断言的基本原则:1.明确定义预期结果:在进行异常断言之前,需要明确定义所期望的结果。
这样可以方便后续对比实际结果与预期结果,以判断是否发生异常。
2.选择合适的断言方式:根据测试的具体情况,选择适合的断言方式。
常见的断言方式有断言语句、断言代码块和断言方法等。
3.标记和报告异常情况:对于发生异常的情况,需要进行标记并生成相应的报告。
这样可以方便后续的分析和问题定位。
二、异常处理的概念与原则异常处理是指在程序运行过程中,针对可能出现的异常情况进行捕获和处理,以使程序能够正常执行或进行相应的异常处理操作。
以下是几个异常处理的基本原则:1.准确确定异常类型:在异常处理中,需要准确确定异常的类型,以便于选择合适的处理方式。
常见的异常类型包括运行时异常和非运行时异常等。
2.及时捕获异常:在程序中,需要及时捕获可能出现的异常。
通过捕获异常,可以防止程序的崩溃或产生不可预料的结果。
3.合理处理异常:对捕获到的异常,需要进行合理的处理。
处理方式可以包括终止程序、抛出新的异常、记录日志和发送通知等。
三、异常断言与异常处理的应用场景1.验证程序的错误处理机制:通过自动化测试,可以模拟程序出现各种异常情况,从而验证程序的错误处理机制是否正确。
例如,在用户输入非法字符时,程序应该给出相应的提示信息,而不是直接崩溃。
2.检测系统稳定性:自动化测试可以模拟大量的请求和操作,通过观察系统在高负载情况下的运行情况,以及处理异常情况的能力,来测试系统的稳定性。
自动化测试中的异常处理技巧自动化测试是一种快速、高效、精确的测试方式,但是在测试过程中也经常会遇到各种异常情况,如何在自动化测试中处理异常情况,成为了每个测试人员需要掌握的技巧之一。
本文将针对自动化测试中的异常处理技巧进行探讨。
一、常见异常情况在自动化测试过程中,常见的异常情况包括但不限于以下几种:1.元素未找到:由于页面结构的变化或者网络延迟等原因,元素无法被找到,导致测试用例无法继续执行。
2.元素定位错误:测试用例中元素定位错误,导致测试用例执行失败。
3.超时:测试用例执行时间过长,超过了设定的最大时间限制。
4.网络延迟:网络延迟等原因导致测试用例执行失败。
5.页面加载失败:由于网络或者服务器原因,页面无法正常加载,导致测试用例执行失败。
6.接口返回错误:由于接口参数传递错误或者服务器出现异常等原因,接口无法正常返回结果,导致测试用例执行失败。
7.数据库操作失败:由于数据表不存在或者操作权限不足等原因,数据库操作失败,导致测试用例执行失败。
以上异常情况都需要在测试过程中及时处理,否则将导致测试用例无法正常执行或者结果不准确。
二、异常处理技巧针对以上异常情况,下面将介绍不同的异常处理技巧。
1. 异常捕获:在代码中使用try-catch语句对可能出现的异常进行捕获。
例如,在元素定位失败时,可以使用try-catch语句捕获异常,并在catch块中进行相关处理,如输出异常信息、重新进行元素定位等。
2. 隐式等待:在测试用例执行之前进行设置,设置页面元素的最大等待时间,当页面元素未找到时,程序会自动等待设定的时间再进行尝试。
3. 显式等待:在测试用例中设置等待时间,用于等待某些操作完成后再进行下一步操作,如等待页面加载完成、等待元素出现等。
4. 截图:在测试用例执行失败时,可以进行屏幕截图,以便后续分析原因。
在程序出现异常导致测试用例执行失败时,可以通过截图进行分析,快速定位异常所在地。
5. 日志记录:在测试用例执行时添加日志记录,记录每个操作的执行结果和时间等,以便后续排查问题。
自动化测试中的异常情况处理自动化测试是一种重要的软件测试方法,通过使用自动化测试工具和脚本来执行测试用例,提高测试效率和准确性。
然而,在实际的测试过程中,往往会遇到各种异常情况。
本文将讨论自动化测试中的异常情况处理方法。
一、异常情况的分类在自动化测试中,异常情况可以分为以下几类:1. 代码错误:这是指在编写测试脚本或自动化测试工具使用过程中出现的错误。
例如,语法错误、逻辑错误等。
2. 环境问题:这是指测试环境出现的问题,如网络不稳定、服务器故障等。
这些问题会导致测试无法正常进行或测试结果不准确。
3. 测试数据异常:测试数据是自动化测试的重要组成部分。
如果测试数据出现异常,可能会导致测试结果不符合预期。
4. 界面变化:在软件开发的过程中,界面的变化是常见的情况。
如果界面发生变化,可能会导致原有的测试脚本无法正常执行。
二、异常情况处理方法在自动化测试中,我们需要采取一些方法来处理异常情况,以确保测试的准确性和稳定性。
以下是一些常用的异常情况处理方法:1. 异常捕获和处理:在编写测试脚本时,可以使用异常捕获和处理机制来捕获测试过程中出现的异常,并采取相应的措施进行处理。
例如,使用try-catch块来捕获异常,并在catch块中执行相应的异常处理逻辑。
2. 断言和异常断言:在测试脚本中,可以使用断言来验证测试的预期结果。
如果测试结果不符合预期,断言会抛出异常,可以在异常处理中对异常进行处理或记录。
这样可以快速发现问题,并进行修复或调试。
3. 环境监控和管理:在自动化测试过程中,需要对测试环境进行监控和管理。
可以使用监控工具实时监测环境的状态,并及时发现并解决问题。
例如,使用监控工具来检测网络的稳定性,并在网络不稳定时暂停测试,等待网络恢复后再继续执行测试。
4. 数据校验和更新:在自动化测试中,测试数据的准确性和一致性对于测试的结果至关重要。
因此,需要定期对测试数据进行校验和更新。
可以使用数据校验工具来检测测试数据的完整性,并根据需要进行数据的更新和修复。
Java中的异常处理与断言在Java编程语言中,异常处理和断言是重要的概念。
异常处理能够帮助开发者在程序运行过程中捕获和处理潜在的错误,而断言则用于在程序开发过程中检查条件是否满足。
本文将详细介绍Java中的异常处理和断言的用法及相关注意事项。
一、异常处理在程序的执行过程中,可能会遇到各种各样的错误,例如输入不合法、文件不存在或者网络连接失败等。
这些错误被称为异常,并且会导致程序的中断或崩溃。
为了避免程序出现不可预料的错误,Java提供了异常处理机制。
Java异常处理机制依赖于以下关键字:try、catch和finally。
通过使用这些关键字,我们可以编写代码来捕获和处理异常。
下面是一个简单的异常处理的示例:```javatry{// 可能导致异常的代码}catch(Exception e){// 处理异常的代码}finally{// 无论是否有异常,都会执行的代码}```在上面的代码中,try块是包含可能抛出异常的代码块。
catch块用于捕获和处理异常。
finally块中的代码无论异常是否发生,都会执行。
不同的异常有不同的类型,例如ArithmeticException、NullPointerException等。
我们可以根据具体的情况来捕获和处理不同类型的异常。
例如:```javatry{// 可能导致异常的代码}catch(ArithmeticException e){// 处理算术异常的代码}catch(NullPointerException e){// 处理空指针异常的代码}catch(Exception e){// 处理其他异常的代码}```在上面的代码中,我们可以看到不同类型的异常分别由不同的catch块来捕获和处理。
最后的catch块可以用来处理未被前面的catch块捕获的异常。
二、断言断言是开发过程中用来检查条件是否满足的一种机制。
在Java中,断言通常用于验证程序是否满足预期的条件。
python中断言与异常处理详解在Python中,断言(assert)和异常处理是两种处理错误和异常的方式。
断言用于在代码中检查某个条件是否为真,如果为假,则引发AssertionError异常。
异常处理用于捕获并处理代码中的错误和异常,使得程序在出现错误时可以进行相应的处理,而不会中断执行。
1. 断言(assert):断言是一种用于测试代码中某个条件是否为真的方法,其语法为:assert expression, message。
- expression:需要进行测试的条件表达式。
- message:可选项,用于在断言失败时显示的错误信息。
当代码执行到断言语句时,会判断表达式的运行结果是否为True,如果为False,则会引发AssertionError异常,并且会输出指定的错误信息。
断言可以用于测试代码中的预设条件是否满足,以确保程序正常运行。
例如:```x = 5assert x > 0, "x must be positive"```在上述代码中,如果x不大于0,就会触发断言错误并输出错误信息"x must be positive"。
断言在开发和调试代码时非常有用,可以帮助我们快速定位和解决问题。
2. 异常处理:异常处理是用于捕获并处理代码中的错误和异常的机制。
当代码中发生错误或异常时,会触发相应的异常,并且执行相应的异常处理代码。
Python提供了一系列的内置异常类型,如IndexError、ValueError、TypeError等。
异常处理包括try-except语句块和finally语句块:- try:尝试执行可能出现异常的代码块。
- except:用于捕获并处理代码块中的异常。
- finally:无论是否发生异常,都会执行的代码块。
基本的异常处理语法格式为:```pythontry:# 可能会出现异常的代码块...except ExceptionType1:# 异常1的处理代码...except ExceptionType2:# 异常2的处理代码......finally:# 无论是否有异常,都会执行的代码块...```在try块中,我们放置可能会出现异常的代码,它可以有一个或多个except块来捕获处理不同类型的异常。
程序调试技巧分享第一章异常处理当我们在编写程序时,经常会遇到各种错误和异常情况。
在调试过程中,我们需要掌握一些技巧来处理这些异常,保证程序的稳定运行。
1. 使用断言:断言是一种常用的调试技巧,它可以在程序执行过程中检查某个条件是否成立。
如果条件不成立,断言会触发一个错误,帮助我们找到问题所在。
在开发过程中,我们可以通过添加断言语句来验证一些重要的假设条件,确保程序在运行时不会出现意料之外的情况。
2. 异常捕获:异常是指程序在运行过程中出现的错误或意外情况。
为了防止异常导致程序崩溃,我们可以使用异常捕获技术来处理异常。
在程序的关键部分,我们可以使用try-catch语句来捕获异常,并进行相应的处理。
通过捕获异常,我们可以更好地理解问题发生的原因,并采取相应的措施解决问题。
3. 日志记录:在调试过程中,我们可以使用日志记录来收集程序执行过程中的信息。
通过记录日志,我们可以追踪程序的执行路径,并查看各个变量的值。
日志记录不仅可以帮助我们分析问题的发生原因,还可以用于后续的回溯和分析。
在实际开发中,我们可以使用专业的日志记录工具,如Logback和Log4j等。
第二章测试技术测试是保证程序质量的重要手段之一。
在调试过程中,我们需要掌握一些测试技术,确保程序在各种情况下都能正常运行。
1. 单元测试:单元测试是指对程序中的最小单元进行测试,如函数、类或模块等。
通过编写单元测试用例,我们可以针对不同的输入情况来测试程序的各个功能模块。
通过单元测试,我们可以快速定位和修复程序中的问题。
2. 集成测试:集成测试是指对程序的整体进行测试,验证各个模块之间的协作是否正常。
在集成测试中,我们可以使用模拟数据和模拟环境来模拟真实的运行情况,通过对整个系统的集成测试,可以发现和解决集成问题。
3. 白盒测试和黑盒测试:白盒测试是指测试人员有关程序的内部结构和实现细节的信息,使用这些信息来设计和执行测试用例。
而黑盒测试则是指测试人员只知道程序的输入和输出,不了解其内部实现细节。
在软件开发过程中,错误处理是一个重要的环节,它涉及到程序的稳定性和可靠性。
合理的错误处理工具和方法可以提高软件的质量,提升用户体验。
本文将介绍一些常见的错误处理工具和方法,希望对软件开发人员有所帮助。
一、错误处理工具1. 异常处理:异常处理是一种常见的错误处理工具,它可以在程序出现异常情况时进行捕获并进行相应的处理。
在开发过程中,我们可以使用try-catch语句来捕获异常,并根据具体情况进行处理,例如输出错误信息、日志记录等。
合理的异常处理可以帮助我们及时发现和解决问题,提高程序的稳定性。
2. 断言:断言是一种在程序中插入的检查点,用于验证程序的假设条件是否成立。
当条件不满足时,断言会触发错误,帮助我们快速定位问题所在。
在开发过程中,我们可以使用断言来检查输入参数、预防潜在的错误产生。
3. 日志记录:日志记录是一种记录系统运行状态和异常情况的工具,它可以用于诊断问题和进行错误分析。
在软件开发过程中,我们可以将关键信息记录到日志文件中,以便后期分析和修复问题。
合理的日志记录可以帮助我们快速定位问题,并提供有效的解决方案。
二、错误处理方法1. 错误码:错误码是一种常见的错误处理方法,它通过定义一系列错误码来表示不同的错误类型。
在程序中,当出现错误时,我们可以通过错误码来判断错误类型,并进行相应的处理。
合理的错误码设计可以提高程序的可读性和可维护性。
2. 异常传递:异常传递是一种将异常从一个函数传递到另一个函数的方法,它可以帮助我们在不同的层次上进行错误处理。
在软件开发过程中,我们可以在适当的位置捕获异常,并将其传递给上层函数进行处理。
合理的异常传递可以帮助我们分离错误处理和业务逻辑,提高代码的可维护性。
3. 重试机制:重试机制是一种在程序出现错误时重新执行操作的方法,它可以帮助我们应对临时性错误和网络波动等问题。
在软件开发过程中,我们可以在关键操作周围实现重试机制,以提高操作的成功率。
合理的重试机制可以提高程序的健壮性和容错性。
python异常处理机制python提供了两个⾮常重要的功能来处理python程序在运⾏中出现的异常和错误。
你可以使⽤该功能来调试python程序。
异常处理:断⾔(Assertions)python标准异常异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt⽤户中断执⾏(通常是输⼊^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit⽣成器(generator)发⽣异常来通知退出StandardError所有的内建标准异常的基类ArithmeticError所有数值计算错误的基类FloatingPointError浮点计算错误OverflowError数值运算超出最⼤限制ZeroDivisionError除(或取模)零 (所有数据类型)AssertionError断⾔语句失败AttributeError对象没有这个属性EOFError没有内建输⼊,到达EOF 标记EnvironmentError操作系统错误的基类IOError输⼊/输出操作失败OSError操作系统错误WindowsError系统调⽤失败ImportError导⼊模块/对象失败LookupError⽆效数据查询的基类IndexError序列中没有此索引(index)KeyError映射中没有这个键MemoryError内存溢出错误(对于Python 解释器不是致命的)NameError未声明/初始化对象 (没有属性)UnboundLocalError访问未初始化的本地变量ReferenceError弱引⽤(Weak reference)试图访问已经垃圾回收了的对象RuntimeError⼀般的运⾏时错误NotImplementedError尚未实现的⽅法SyntaxError Python 语法错误IndentationError缩进错误TabError Tab 和空格混⽤SystemError⼀般的解释器系统错误TypeError对类型⽆效的操作ValueError传⼊⽆效的参数UnicodeError Unicode 相关的错误UnicodeDecodeError Unicode 解码时的错误UnicodeEncodeError Unicode 编码时错误UnicodeTranslateError Unicode 转换时错误Warning警告的基类DeprecationWarning关于被弃⽤的特征的警告FutureWarning关于构造将来语义会有改变的警告OverflowWarning旧的关于⾃动提升为长整型(long)的警告PendingDeprecationWarning关于特性将会被废弃的警告RuntimeWarning可疑的运⾏时⾏为(runtime behavior)的警告SyntaxWarning可疑的语法的警告UserWarning⽤户代码⽣成的警告⼀、什么是异常?异常即是⼀个事件,该事件会在程序执⾏过程中发⽣,影响了程序的正常执⾏。
解析C#中断⾔与异常的应⽤⽅式及异常处理的流程控制断⾔与异常(Assertion Vs Exception)在⽇常编程实践中,断⾔与异常的界限不是很明显,这也使得它们常常没有被正确的使⽤。
我也在不断的与这个模糊的怪兽搏⽃,仅写此⽂和⼤家分享⼀下我的个⼈看法。
我想我们还可以从很多⾓度来区别断⾔和异常的使⽤场景,欢迎⼤家的意见和建议。
异常的使⽤场景:⽤于捕获外部的可能错误断⾔的使⽤场景:⽤于捕获内部的不可能错误我们可以先仔细分析⼀下我们在.net中已经存在的异常。
System.IO.FileLoadExceptionSqlExceptionIOExceptionServerException⾸先,我们先不将它们看成异常,因为我们现在还没有在异常和断⾔之间划清界限,我们先将它们看成错误。
当我们在编码的第⼀现场考虑到可能会出现⽂件加载的错误或者服务器错误后,我们的第⼀直觉是这不是我们代码的问题,这是我们代码之外的问题。
例如下⾯这段代码public void WriteSnapShot(string fileName, IEnumerable<DbItem> items){string format = "{0}\t{1}\t{2}\t{3}\t{4}\t{5}";using (FileStream fs = new FileStream(fileName, FileMode.Create)){using (StreamWriter sw = new StreamWriter(fs, Encoding.Unicode)){ ...foreach (var item in items){sw.WriteLine(string.Format(format, new object[]{item.dealMan,item.version,item.priority,item.bugStatus,item.bugNum,item.description}));}sw.Flush();}}}上⾯的代码在写⼊⽂件,很显然会导致IOException。
第七部分异常和工具异常基础try/except捕捉由Python或你的代码引起的异常并从中恢复。
try/finally无论异常是否发生,执行清理行为。
raise手动在代码中触发异常。
assert有条件地在程序代码中触发异常。
with/as环境管理器。
为什么使用异常异常让我们摆脱程序中任意长度的代码块。
异常可认为使一种结构化的“超级goto”语句。
异常的角色错误处理:每当在运行时检测到程序错误时,Python就会引发异常。
可以在程序代码中捕捉和响应错误,或者忽略已发生的异常。
Python默认的异常处理行为将启动:停止程序并打印出错消息。
try语句捕获异常并从中恢复。
事件通知:异常也可以用于发出有效状态的信号,无需在程序中四处传递结果标签,或是可以对其进行测试。
raise特殊情况处理:有时发生了某种极为罕见的情况,很难证明调整代码在多个场合处理它是合理的。
assert语句用于在开发过程中检查条件是否于期望中的一致。
终止行为:无论程序中是否发生异常,try/finally语句可确保实行需要的结束操作。
with语句在这一方面为支持它的对象提供了一种替代方案。
非常规控制流程:异常是一种高级的结构化语句,所以可以作为实现奇异控制流程的基础。
Python中没有“go to”语句。
raise语句可用来跳出多重循环。
真正的反向跟踪并不是Python语言的一部分。
反向跟踪会在跳转之前解除所有的运算,但是Python的异常不会这样:在进入try语句后的异常被引发前这期间赋值的变量不会被重置回先前的值。
异常:梗概默认异常处理器def fetcher(obj, index):return obj[index]x = 'spam'fetcher(x, 3) >>>'m'fetcher(x, 4) #IndexError: string index out of range 代码没有刻意捕获这个异常,它将会一直向上返回到程序顶层,并弃用默认的异常处理器——打印标准出错消息。