5 k: r; g" N* v. ]4 W8.答案B和D正确。出现解析错误往往表示脚本中有语法错误,自定义的错误管理器无法捕捉到它们的原因很明显:错误管理器在脚本里,而现在无法解析脚本,管理器也就无法执行。类似的,E_ERROR表示有致命的运行错误出现,比如内存耗尽。因此脚本会立刻被中断,因为解释器无法执行后面的代码。 8 h9 i8 X( k% C4 p# \5 U" V1 O. n. ]5 G; t {- o0 R/ J& O& N
9.答案是C。比较操作是一个可交换的操作(就是说结果独立于操作数之外),而赋值不是。因此,比如说,$a==10和10==$a是等效的,而$a=10和10=$a却不是,而且后者会导致一个错误,因为这不是一个合法的操作。确保常量在操作符前面,能保证你不会错误得将比较变成赋值。0 e0 h: l. t+ c. S% e
, N: S8 M5 t" M0 ]& u5 F# L) O10.答案是C。error_log函数能将信息送往一个指定的地址。尽管mail()也可以用,但error_log能自动给邮件添加标题,因此这才是最简单的方法。 . V* O1 Y! p* k5 B( s9 i, O $ [' L; ^9 c! @2 ~7 ]11.答案是不能。error_reporting函数能关闭所有运行时的错误报告,但对解析时的错误无效,因为解析错误发生在脚本执行之前。 ( ~" p, M1 v+ g' p / m8 K9 W' [+ M/ M1 o12.显然,答案是C。概要分析器(profiler)能监视脚本的运行,并记录单个部分的运行时间。它可以用来找出和解决瓶颈。+ U6 g: y) M- w3 b
2 t8 ]: e7 @* x3 } t
13.这是对调试器的完美定义!你可以用调试软件监视脚本运行,同时分析系统资源消耗,从而发现和解决程序缺陷。 , k1 c E! q u: T% \ / w7 D- m" @2 P0 _3 B* r8 V. \8 r14.trigger_error()和user_error()之间没有区别。后者其实是前者的别名。7 c% E3 L( D" L. f8 @6 h4 H% a8 M: V
7 ?, Q% i, O. ?' [! m+ N0 t' C T
15.答案是D。题目是在描述debug_backtrace函数,它返回一个由所有在代码的特定位置调用过的函数名组成的数组。