Fel i PHP 7: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '== Fel i PHP 7 == PHP 7 ändrar hur de flesta fel rapporteras av PHP. Istället för att rapportera fel genom den traditionella felrapporteringsmekanismen som användes i PHP 5, rapporteras de flesta fel nu genom att kasta Error-undantag. Precis som med vanliga undantag kommer dessa '''Error'''-undantag att bubbla upp tills de når det första matchande '''catch'''-blocket. Om det inte finns några matchande block, kommer en eventuell standardundantagshanterare install...')
 
Rad 1: Rad 1:
== Fel i PHP 7 ==
PHP 7 ändrar hur de flesta fel rapporteras av PHP. Istället för att rapportera fel genom den traditionella felrapporteringsmekanismen som användes i PHP 5, rapporteras de flesta fel nu genom att kasta Error-undantag.
Precis som med vanliga undantag kommer dessa '''Error'''-undantag att bubbla upp tills de når det första matchande '''catch'''-blocket. Om det inte finns några matchande block, kommer en eventuell standardundantagshanterare installerad med '''set_exception_handler()''' att anropas, och om det inte finns någon standardundantagshanterare, kommer undantaget att konverteras till ett fatalt fel och hanteras som ett traditionellt fel.
Eftersom '''Error'''-hierarkin inte ärver från '''Exception''', kommer kod som använder '''catch (Exception $e) { ... }'''-block för att hantera ohanterade undantag i PHP 5 att upptäcka att dessa '''Errors''' inte fångas av dessa block. Antingen ett '''catch (Error $e) { ... }'''-block eller en '''set_exception_handler()'''-hanterare krävs.
== Fel i PHP 7 ==
== Fel i PHP 7 ==


Rad 8: Rad 16:


=== Error-hierarki ===
=== Error-hierarki ===
* '''Throwable'''
<pre>
     * '''Error'''
Throwable
         * '''ArithmeticError'''
     Error
        * '''DivisionByZeroError'''
         ArithmeticError
         * '''AssertionError'''
          DivisionByZeroError
         * '''CompileError'''
         AssertionError
        * '''ParseError'''
         CompileError
         * '''TypeError'''
          ParseError
        * '''ArgumentCountError'''
         TypeError
         * '''ValueError'''
          ArgumentCountError
         * '''UnhandledMatchError'''
         ValueError
         * '''FiberError'''
         UnhandledMatchError
     * '''Exception'''
         FiberError
     Exception
</pre>

Versionen från 20 augusti 2024 kl. 08.32

Fel i PHP 7

PHP 7 ändrar hur de flesta fel rapporteras av PHP. Istället för att rapportera fel genom den traditionella felrapporteringsmekanismen som användes i PHP 5, rapporteras de flesta fel nu genom att kasta Error-undantag.

Precis som med vanliga undantag kommer dessa Error-undantag att bubbla upp tills de når det första matchande catch-blocket. Om det inte finns några matchande block, kommer en eventuell standardundantagshanterare installerad med set_exception_handler() att anropas, och om det inte finns någon standardundantagshanterare, kommer undantaget att konverteras till ett fatalt fel och hanteras som ett traditionellt fel.

Eftersom Error-hierarkin inte ärver från Exception, kommer kod som använder catch (Exception $e) { ... }-block för att hantera ohanterade undantag i PHP 5 att upptäcka att dessa Errors inte fångas av dessa block. Antingen ett catch (Error $e) { ... }-block eller en set_exception_handler()-hanterare krävs.

Fel i PHP 7

PHP 7 ändrar hur de flesta fel rapporteras av PHP. Istället för att rapportera fel genom den traditionella felrapporteringsmekanismen som användes i PHP 5, rapporteras de flesta fel nu genom att kasta Error-undantag.

Precis som med vanliga undantag kommer dessa Error-undantag att bubbla upp tills de når det första matchande catch-blocket. Om det inte finns några matchande block, kommer en eventuell standardundantagshanterare installerad med set_exception_handler() att anropas, och om det inte finns någon standardundantagshanterare, kommer undantaget att konverteras till ett fatalt fel och hanteras som ett traditionellt fel.

Eftersom Error-hierarkin inte ärver från Exception, kommer kod som använder catch (Exception $e) { ... }-block för att hantera ohanterade undantag i PHP 5 att upptäcka att dessa Errors inte fångas av dessa block. Antingen ett catch (Error $e) { ... }-block eller en set_exception_handler()-hanterare krävs.

Error-hierarki

Throwable
    Error
        ArithmeticError
          DivisionByZeroError
        AssertionError
        CompileError
          ParseError
        TypeError
          ArgumentCountError
        ValueError
        UnhandledMatchError
        FiberError
    Exception