Smalltalk编程:调试与容器的深入解析
1. 变量声明与未知消息选择器
在编程中,每个变量标识符在其作用域内只能声明一次。不同类型的变量可能有不同但可能重叠的作用域。例如,实例变量的作用域覆盖其类中的所有实例方法,这就与这些方法中定义的局部变量的作用域重叠。
编译器能够识别Smalltalk表达式中是否包含在整个映像中没有方法定义的消息标识符。如果存在这样的情况,错误的消息选择器会用虚线下划线标记。不过,你也可以忽略缺失的方法,让翻译过程继续进行。但在激活方法时,必须确保其中使用的所有消息标识符都有对应的方法,否则会遇到异常。
2. 异常处理
异常是在Smalltalk程序由虚拟机(VM)处理时发现的错误情况,可能导致程序中止或在激活调试器时中断程序。
常见的异常包括:
- 尝试激活不存在的方法。例如,忽略错误的消息选择器并选择“执行”,VM会报告类不理解该消息。
- 向不合适的对象发送消息,比如向绑定到 nil 的变量发送字符串消息。
- 除以0(错误消息:“Can’t divide a number by 0”)。
- 尝试使用无效索引访问容器(如数组)(错误消息:“Subscript out of bounds”)。
当调试器窗口标题中的错误消息提供了足够的错误原因信息时,通常可以通过关闭窗口或点击菜单栏中的“执行→终止”来结束程序执行。只有在少数情况下,点击“执行→运行”让程序继续运行才有意义。
3. 调试方法
调试器的一个重要用途是逐行执行Smalltalk程序,即逐个消息执行。这有助于在
超级会员免费看
订阅专栏 解锁全文
46

被折叠的 条评论
为什么被折叠?



