;; generate-runtime-type-error 的实现
(define (generate-runtime-type-error proc-name arglist)
(signal-runtime-error
(string-append "The operation " proc-name
" expects a number but received "
(get-display-representation (car arglist)))
"Expecting a number"))
路径A:Blocks中 if 条件或其他积木块层叠导致系统在判断之前就尝试了隐式类型转换。比如 if (is text empty?) 后面接了 set TextBox.Text to (someNumber + something) 等操作。
路径B:App中用了 if not (is text empty? TextBox1.Text) 然后直接拿 TextBox1.Text 去设置其他组件的属性(比如传入数字函数或设置到数值相关的属性)。此时 Kawa 内部把 text 值先隐式转成 number 再转回 string,产生了 NaN 并触发格式化异常。