|
|
1
7
异常是一种意外情况,这就是为什么处理停止的原因。 跳转到过程末尾是一个不可见的finally语句,用于释放任何本地“分配”的内存,如字符串、接口、记录等。 如果你想处理异常,你必须封装可以通过try发出异常的调用。.except语句,并使用“on”子句仅处理您要处理的特定异常。
|
|
|
2
6
一般来说,一个未捕获的异常将在堆栈上的每个函数中执行一个隐藏的“finally”,因为它“解除”到异常处理程序。这将清理每个堆栈帧中的局部变量。在具有资源获取即初始化范式的C++等语言中,它也会导致析构函数运行。
|
|
|
3
3
在现实生活中,你也有同样的事情:如果有人让你用希伯来语(或你不懂的某种语言)数到10,你只是说你不知道。不管怎样,你都不要去尝试。 |
|
|
4
2
调试器中的异常与发布中的异常不同(除非有except/finally块,否则异常确实会导致执行退出该proc/函数)。为什么调试应该让你完全忽略异常? |
|
|
5
0
它必须解开堆栈才能找到处理程序。 我确实同意这是一种非常烦人的行为。继续不是一种选择,但如果调试器指向抛出它的位置,并且局部变量保持不变,那么它肯定会让事情变得更容易。显然,下一步将是最终隐藏,而不是下一行。 知道 有问题的字符串不包含非数字字符(健全性限制意味着溢出情况永远不会发生,这是我的数据文件,我担心的只是糟糕),所以我没有在StrToInt周围放置异常处理程序——它不是一个有效的数字,这有什么意义?????是的——例程不会用缓冲区中的任何非数字来调用它——但空字符串中没有任何非数字! |