首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 自动化指南(繁琐工作自动化)第二版:十一、调试

一般来说,越早发现错误,就越容易修复。 其次,您将了解如何使用调试器。调试器是 Mu 的一个特性,它一次执行一条程序指令,让您有机会在代码运行时检查变量的跟踪这些程序过程中是如何变化的。...如果没有包含引发异常的raise语句的try和except语句,程序就会崩溃显示异常的错误信息。 通常,知道如何处理异常的是调用函数的代码,不是函数本身。...只有当程序正在开发时,断言才应该失败;用户永远不会在完成的程序中看到断言错误。对于程序在正常操作中可能遇到的错误(比如找不到文件或者用户输入了无效数据),抛出一个异常,不是用assert语句检测它。...当调试器到达第 7 行,程序中的最后一个print()调用时,Mu 编辑器窗口应该看起来像图 11-3 。 图 11-3:右边的调试检查器窗格显示变量被设置字符串不是整数导致错误。...在调试检查器窗格中,您应该看到first、second和third变量被设置字符串'5'、'3'和'42',不是整数值5、3和42。

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

Python中的用户定义异常与NZEC错误

当代码出错时,Python会引发错误和异常,这可能导致程序突然停止。Python还通过try-except提供了异常处理方法。...运行时错误是一个类,是一种标准异常,当生成的错误不属于任何类别时会引发错误。该程序说明了如何运行时错误用作基础类,将网络错误用作派生类。...当代码返回0时,表示它已成功执行,否则将根据错误类型返回其他一些数字。 当程序结束并且应该返回“ 0”以指示是否完成正常并且无法执行时,会导致NZEC。当然,还有更多与NZEC相关的案例。...假设您有两个整数,如下所示: 23 45 使用: n = int(输入()) k = int(输入()) 用: n,k = raw_input().split('') n =整数(n) k =整数(...5、检查变量的,它们很容易受到整数流的影响。

1.6K20

Python中的用户定义异常与NZEC错误

当代码出错时,Python会引发错误和异常,这可能导致程序突然停止。Python还通过try-except提供了异常处理方法。...运行时错误是一个类,是一种标准异常,当生成的错误不属于任何类别时会引发错误。该程序说明了如何运行时错误用作基础类,将网络错误用作派生类。...当代码返回0时,表示它已成功执行,否则将根据错误类型返回其他一些数字。 当程序结束并且应该返回“ 0”以指示是否完成正常并且无法执行时,会导致NZEC。当然,还有更多与NZEC相关的案例。...假设您有两个整数,如下所示: 23 45 使用: n = int(输入()) k = int(输入()) 用: n,k = raw_input().split('') n =整数(n) k =...检查变量的,它们很容易受到整数流的影响。

11720

Python中的用户定义异常与NZEC错误

当代码出错时,Python会引发错误和异常,这可能导致程序突然停止。Python还通过try-except提供了异常处理方法。...运行时错误是一个类,是一种标准异常,当生成的错误不属于任何类别时会引发错误。该程序说明了如何运行时错误用作基础类,将网络错误用作派生类。...当代码返回0时,表示它已成功执行,否则将根据错误类型返回其他一些数字。 当程序结束并且应该返回“ 0”以指示是否完成正常并且无法执行时,会导致NZEC。当然,还有更多与NZEC相关的案例。...假设您有两个整数,如下所示: 23 45 使用: n = int(输入()) k = int(输入()) 用: n,k = raw_input().split('') n =整数(n) k =...检查变量的,它们很容易受到整数流的影响。

1.5K10

Visual Studio 调试系列2 基本调试方法

当你按下“重启”时,与停止应用并重启调试器相比,它节省了时间。 调试器在执行代码命中的第一个断点处暂停。 若确实要停止调试器返回到代码编辑器,可以按红色停止 ? 按钮不是“重启”。 ?...过程的速度比停止调试,然后再按下F5调试的速度更快。 ? 09 使用数据提示检查变量 在调试器中暂停时,将鼠标悬停在对象上看到其默认属性。...例如,你可将断点插入到指定的函数中,使用“运行到光标处”重启应用,然后检查源代码。 请参阅如何检查调用堆栈。 13 检查异常 应用引发异常时,调试器会将你转至引发异常的代码行。 ?...异常帮助程序是帮助调试错误的好功能。 你还可以执行其他操作,如查看错误详细信息及从异常帮助程序添加监视。 或者,如有需要可更改引发特定异常的条件。...1、将下一条语句移动到另一个函数或范围通常会导致调用堆栈损坏,导致一个运行时错误或异常。 如果尝试将下一条语句移动到另一个范围,则调试器将打开一个含有警告的对话框,并提供一个取消该操作的机会。

4.4K10

Fuzzbook系列:软件的安全性测试

检查了其结果是否正确。...但是,仍然存在许多问题: 单个测试需要五行代码 我们不在乎舍入错误 我们仅检查单个输入(和单个结果) 让我们一一解决这些问题。首先,让我们使测试更加紧凑。...几乎所有的编程语言都可以自动检查条件是否成立,如果条件不成立则停止执行。这称为断言,对于测试非常有用。 在Python中,我们使用assert语句,如果条件true,则什么也不会发生。...在实践中,通常会在生产过程中禁用运行时检查,以确保可靠性代价。另一方面,一套全面的运行时检查是发现错误快速调试它们的好方法。您需要确定在生产期间仍需要多少种这样的功能。...但是,即使我们将随机生成器设置产生0–1000000不是1–1000000的输入,它偶然产生零的机会仍然是百万分之一。

38220

Excel编程周末速成班第24课:调试和发布应用程序

即便如此,某些bugs可能会超出测试范围只能由用户发现并报告;因此,对于你而言重要的是要知道如何使用VBA的调试工具来进行调试去找到修复bugs。 什么是Bugs?...几乎所有需要全局变量或公共变量的情况都可以使用过程参数和函数返回进行处理。 必要时,请确保对数字变量使用浮点数据类型。在某些情况下使用整数类型可能会导致舍入错误和bugs。...如果你认为已找到该bug希望更正代码以对其进行修复,使用“重新设置”结束该程序。 在中断模式下代码编辑 VBA使你可以在中断模式下修改代码。当你认为已发现问题希望立即解决该问题时,功能很有用。...使用监视 监视使你能够在执行期间确定程序变量的检查变量的最简单方法是在中断模式下。只需将鼠标指针停留在代码中变量的名称上,VBA就会弹出一个带有当前的小窗口。...要点回顾 本课程向你展示了如何使用VBA的调试工具,探讨了发布Excel应用程序时涉及的因素。 程序bug是使程序无法正确运行的代码错误

5.7K10

EVMPatch:自动修补以太坊智能合约

避免重写程序附加的代码由于在前的推操作码字节被意外标记为无效的跳转目标,谨慎地在原始合约的数据和新附加的代码之间插入填充。...当前,假设引入的补丁程序不会导致任何新的状态更改指令。假设适用于引入输入验证代码并在传递无效输入时还原的补丁。但是,跟踪差异计算可以调整为了解补丁程序引入的潜在状态变化。...当合约使用低级调用指令时,错误处理的异常可能发生,其中返回不会自动处理,并且合约未正确检查返回。可以通过在此类调用指令后插入通用返回检查来解决问题。...在处理整数算术时,很可能会出现整数错误,因为默认情况下,Solidity不使用检查的算术。这导致部署了许多潜在的易受攻击的合约,并且有一些受到积极攻击。...在分析合约时,Osiris不了解黑洞地址的语义,并报告可能的整数溢出。然后,EVMPATCH保守地修补Osiris报告的整数溢出错误,这会导致一个合法交易失败。

32820

使用VS.NET2003编写存储过程

它告诉 SQL Server 停止该查询计算受影响的行数,停止向调用函数返回该。这是一项不必要的额外工作。其次,结尾处的 RETURN @@ERROR 一行很重要。...此行代码返回 SQL Server 中发生的错误整数值。您可以在调用例程中使用代码完成其他诊断和错误处理操作。您现在并不需要执行任何操作,但它们是创建存储过程时应该遵循的两个好习惯。...过程用于从数据库中检索单条主题记录。您会发现一些附加项,包括输入参数、返回特定的输出参数,以及检查输入参数并在需要时返回错误的某些程序代码。...除前两个参数外,其他参数均被标记为 OUTPUT 参数。这些参数用于返回选定记录的使用一条记录的返回要比返回带有所有字段的记录集合更为高效。...再其次,您会发现检查 @ID 参数,以确保其代表一条现有记录。如果不是现有记录,则传送返回代码 101 终止执行。最后,如果输入变量都有效,存储过程将尝试选择记录返回相应的

2.2K20

爬虫(108)Python 3.8的超酷新功能(接近一万字,请耐心享用,而且建议收藏)

它们使用新的符号(:=)编写。该运算符通常被称为海象运算符,因为它类似于海象的侧面的象牙和海象牙。 赋值表达式使您可以在同一表达式中赋值返回一个。...更好的解决方案是设置一个无限while循环,然后使用它break来停止循环: inputs = list() while True: current = input("Write something...Mypy将使用错误消息标记示例Cannot inherit from final class "Base"。要了解有关Final和的更多信息@final,请参阅PEP 591。...检查.mean和.stdev,您会看到旧版本的statistics.mean()运行时0.826±0.078秒,新版本的运行statistics.fmean()时间0.0105±0.0009秒。...Python 3.8添加了一些新功能,可以在编码和调试过程中您提供帮助。 is和之间的区别==可能会造成混淆。相等的,后者检查is是True仅当对象是相同的。

2.6K20

【8】进大厂必须掌握的面试题-Java面试-异常和线程

错误和异常有什么区别? 错误是在运行时发生的不可恢复的情况。如OutOfMemory错误。这些JVM错误无法在运行时修复。尽管可以在catch块中捕获错误,但是应用程序的执行将停止并且无法恢复。...否则,如果尝试使用null引用,则会发生NullPointerException。在大多数情况下,有可能从异常中恢复(可能是通过向用户提供输入正确的反馈等)。 Q2。您如何处理Java异常?...未经检查的异常 扩展RuntimeException的类称为未检查的异常。 未检查的异常不会在编译时检查。...它始终与try块相关联,无论是否发生任何异常。是的,如果程序通过调用System.exit()或导致致命错误导致进程中止)退出,则最终将不会执行。 Q11。什么是同步? 同步是指多线程。...同步是使所有并发线程在执行中保持同步的过程。同步避免了由于共享内存视图不一致导致的内存一致性错误。当一个方法被声明为已同步时,线程将保持该方法对象的监视器。

54210

【8】进大厂必须掌握的面试题-Java面试-异常和线程

错误和异常有什么区别? 错误是在运行时发生的不可恢复的情况。如OutOfMemory错误。这些JVM错误无法在运行时修复。尽管可以在catch块中捕获错误,但是应用程序的执行将停止并且无法恢复。...否则,如果尝试使用null引用,则会发生NullPointerException。在大多数情况下,有可能从异常中恢复(可能是通过向用户提供输入正确的反馈等)。 Q2。您如何处理Java异常?...未经检查的异常 扩展RuntimeException的类称为未检查的异常。 未检查的异常不会在编译时检查。...它始终与try块相关联,无论是否发生任何异常。 是的,如果程序通过调用System.exit()或导致致命错误导致进程中止)退出,则最终将不会执行。 Q11。什么是同步? 同步是指多线程。...同步是使所有并发线程在执行中保持同步的过程。同步避免了由于共享内存视图不一致导致的内存一致性错误。当一个方法被声明为已同步时,线程将保持该方法对象的监视器。

66210

Python 自动化指南(繁琐工作自动化)第二版:八、输入验证

原文:https://automatetheboringstuff.com/2e/chapter8/ 输入验证代码检查用户输入,比如来自input()函数的文本,格式是否正确。...当您运行代码时,系统会提示您输入年龄,直到您输入一个有效的年龄。这确保了当执行离开while循环时,age变量将包含一个不会在以后使程序崩溃的有效。...然而,程序中的每个input()调用编写输入验证代码很快就变得乏味了。此外,您可能会错过某些情况,允许无效的输入通过您的检查。...(),不是调用addsUpToTen()传递它的返回。...项目:如何让一个白痴忙上好几个小时 让我们使用 PyInputPlus 来创建一个简单的程序,它执行以下操作: 问用户是否想知道如何让一个白痴忙上几个小时。 如果用户回答否,退出。

1.2K30

代码质量规则

CA1055:URI 返回不应是字符串 规则假定该方法返回 URI。 URI 的字符串表示形式容易导致分析和编码错误,并且可造成安全漏洞。 System.Uri 类以一种安全的方式提供这些服务。...在循环使用方法可能导致无限堆栈增长,最终出现堆栈溢出的情况。...CA5363:请勿禁用请求验证 请求验证是 ASP.NET 中的一项功能,可检查 HTTP 请求确定这些请求是否包含可能导致跨站点脚本编写等注入攻击的潜在危险内容。...修复是中断修复还是非中断修复 规则冲突的修复是否是一项重大更改。 重大更改意味着,在导致冲突的目标上具有依赖关系的程序集不会使用新修复的版本重新编译,或者可能会由于此更改在运行时失败。...原因 导致规则生成警告的特定托管代码。 说明 讨论警告背后的问题。 如何解决冲突 说明如何更改源代码以满足规则防止它生成警告。 何时禁止显示警告 描述何时可以安全地禁止显示规则警告。

2.1K30

使用 Python 可视化 O(n)

在这种情况下,时间复杂度是一个重要的概念,因为它衡量算法的运行时如何随着输入大小的增长变化。常用的时间复杂度类 O(n) 表示输入大小和执行时间之间的线性关联。...最后使用“plt.xlabel()”和“plt.ylabel()”来标记分别指示其含义的轴,调用“plt.show()”函数使我们能够呈现图形。...通过运行代码,我们可以通过绘制的图形可视化执行时间如何随着更大的输入大小 ('n') 增加。...一旦我们执行程序,图形将向我们显示当输入的大小('n')增长时,处理时间是如何增加的。...了解算法在不同输入大小下的行为方式使我们能够解决复杂的问题构建强大的应用程序,从而及时有效地提供结果。

18110

软件常见漏洞的解析

程序准备从标准输入(stdin)接收最多八个字符。然而,使用函数 gets() 并不能限制用户输入的字符数。攻击者可以通过输入8个以上的字符并将其传递给程序来探索问题。...上面的问题点,可以通过在字符串分配期间考虑空终止符的位置调整负责字符复制的循环定义的索引来修复。 下图是上面的修复后的安全编码风格。...整数漏洞 当计算尝试递增一个大于用于在相关表示形式中存储该整数整数值时,存在整数溢出漏洞。发生错误时,整数值可能会转换为负数或非常小的数字。...当计算结果用于处理控制循环,确定行为(如复制,内存分配,串联等)的大小或偏移量做出决定时,弱点变得安全至关重要。 整数操作中的大多数错误和漏洞都涉及对存储此类型数据的变量进行限制检查不足。...下面的代码显示了由不精确的类型转换生成的常见错误。 尽管该函数检查通知的 size参数值是否符合最大数组大小的限制,但没有与参数值的信号相关的检查

2K50

文件和文件异常

3.逐行读取 读取文件时,常常需要检查其中的每一行:可能要在文件中查找特定的信息,或者要以某种方式修改文件中的文本。 要以每次一行的方式检查文件,可对文件对象使用for循环。...获得一个这样的字符串:它包含精确到30位小数的圆周率。这个字符串长32字符,因为它还包含整数部分的3和小数点。 读取文本文件时,Python将其中的所有文本都解读字符串。...如果未对异常进行处理,程序停止显示一个traceback,其中包含有关异常的报告。 异常是使用try-except代码块处理的。...在这种情况下,Python将停止运行程序指出引发了哪种异常,而我们可根据这些信息对程序进行修改。...如果try代码块因除0错误失败,就打印1条友好消息,告诉用户如何避免这种错误程序继续运行。

5.2K20

号外!!!MySQL 8.0.24 发布

使用旧的或删除的组件名称的应用程序应进行调整以解决更改。 列中多个组件提供了一个 DOCUMENTATION(不再是 NULL),从而提高了运行时组件文档的可用性。...最初,编译器标志是随CMake 程序一起引入的(默认为调试版本),它生成代码以测试函数调用周围的堆栈损坏以及在运行时使用未初始化的变量。删除该错误不会导致发现错误的损失/RTC1 编译器标志。...(错误#30838807) JSON: 该JSON_SEARCH()函数将所有搜索字符串和路径解释 utf8mb4字符串,无论它们的实际编码如何,都可能导致错误的结果。...通过删除尝试转换结果计算最小最大长度的逻辑,不是使用父类的默认设置,可以解决问题 Item_int_func。该默认是64位整数的最大宽度,无论输入如何,该宽度都应该是安全的。...修复程序导致LIKE解释 ESCAPE ''意味着无论字符集如何都没有转义字符,从而恢复了以前的预期行为。 另外,如果指定的转义字符不能转换为目标字符集,我们现在会引发错误

3.6K20
领券