0
在一个非类型化的语言,运行时断言可以赶上“类型错误”:做Hack程序员使用运行时断言?
<?php
function add_one($x) {
assert(is_int($x));
return $x+1;
}
?>
随着哈克的类型注解,我想删除的说法,但这是不安全的,因为无类型的代码仍然可以调用类型的功能。
<?hh // strict
function add_one(int $x): int {
return $x+1;
}
function evil(): void {
// UNSAFE
add_one("yes"); // Runtime error!
}
?>
哪个专业哈克开发商:你强制类型签名与断言? (我真的很想知道Facebook的政策是什么,但我明白这是不是一个秘密。)
是的,有一个错误处理程序将类型注释失败转换为比'E_RECOVERABLE_ERROR'和空白页面更有用的东西是有用的。 Facebook的抛出了一个例外,我们在主要的错误边界处捕捉到了异常,例如,单个新闻馈送故事中的错误只会导致一个故事失败,而不是整个页面。 –