throw
名称
throw() - 把一个值交给最近的 catch()
语法
void throw(mixed value);
描述
立即中止当前正在执行的代码,并把 `value` 交给当前调用之上最近的
catch(3)。该 catch() 会返回 `value`,而不是通常的 0。
throw() 不会返回,所以同一个函数中写在它后面的代码永远不会执行。
任何类型的值都可以抛出,catch() 会把它原样交回 —— 字符串、数组、
映射、类、对象都可以。值不会被转换成文本,也不会被添加任何内容。
因此 throw() 的用途不止于错误消息:你可以把一个完整的结构化结果
交给准备处理它的代码。
抛出 0 是无法被检测到的。catch() 本来就用返回 0 表示“没有出错”,
所以 throw(0) 和主体正常执行完毕看起来完全一样。请抛出 0 以外的值。
只有最内层的 catch() 会收到这个值,它不会自动继续向外传递。如果
捕获到它的代码想把它继续传下去,必须再次 throw()。