1
0
mirror of https://github.com/php/doc-zh.git synced 2026-03-24 15:12:20 +01:00
Files
archived-doc-zh/language/errors/php7.xml
2024-11-30 23:10:17 +08:00

116 lines
3.7 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 4bf789e981af0836c41daa16e57ef86c21497faa Maintainer: FishDrowned Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<sect1 xml:id="language.errors.php7" xmlns="http://docbook.org/ns/docbook">
<title>PHP 7 错误处理</title>
<para>
PHP 7 改变了大多数错误的报告方式。不同于传统PHP 5的错误报告机制现在大多数错误被作为
<classname>Error</classname> 异常抛出。
</para>
<para>
这种 <classname>Error</classname> 异常可以像 <classname>Exception</classname>
异常一样被第一个匹配的 <literal>try</literal> / <literal>catch</literal>
块所捕获。如果没有匹配的
<link linkend="language.exceptions.catch"><literal>catch</literal></link>
块,则调用异常处理函数(事先通过 <function>set_exception_handler</function> 注册)进行处理。
如果尚未注册异常处理函数则按照传统方式处理被报告为一个致命错误Fatal Error
</para>
<para>
<classname>Error</classname> 类并非继承自 <classname>Exception</classname>
类,所以不能用 <code>catch (Exception $e) { ... }</code> 来捕获
<classname>Error</classname>。你可以用
<code>catch (Error $e) { ... }</code>,或者通过注册异常处理函数(
<function>set_exception_handler</function>)来捕获 <classname>Error</classname>
</para>
<sect2 xml:id="language.errors.php7.hierarchy">
<title><classname>Error</classname> 层次结构</title>
<itemizedlist>
<listitem>
<simpara><classname>Throwable</classname></simpara>
<itemizedlist>
<listitem>
<simpara><classname>Error</classname></simpara>
<itemizedlist>
<listitem>
<simpara><classname>ArithmeticError</classname></simpara>
<itemizedlist>
<listitem>
<simpara><classname>DivisionByZeroError</classname></simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara><classname>AssertionError</classname></simpara>
</listitem>
<listitem>
<simpara><classname>CompileError</classname></simpara>
<itemizedlist>
<listitem>
<simpara><classname>ParseError</classname></simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara><classname>TypeError</classname></simpara>
<itemizedlist>
<listitem>
<simpara><classname>ArgumentCountError</classname></simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara><classname>ValueError</classname></simpara>
</listitem>
<listitem>
<simpara><classname>UnhandledMatchError</classname></simpara>
</listitem>
<listitem>
<simpara><classname>FiberError</classname></simpara>
</listitem>
<listitem>
<simpara><classname>RequestParseBodyException</classname></simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara><classname>Exception</classname></simpara>
<itemizedlist>
<listitem>
<simpara>...</simpara>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->