<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=Ut%C3%B6ka_undantag</id>
	<title>Utöka undantag - Versionshistorik</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=Ut%C3%B6ka_undantag"/>
	<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=Ut%C3%B6ka_undantag&amp;action=history"/>
	<updated>2026-04-28T23:56:29Z</updated>
	<subtitle>Versionshistorik för denna sida på wikin</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.linux.se/index.php?title=Ut%C3%B6ka_undantag&amp;diff=3308&amp;oldid=prev</id>
		<title>Admin: Skapade sidan med &#039;== Utöka undantag ==  En användardefinierad undantagsklass kan definieras genom att utöka den inbyggda &#039;&#039;&#039;Exception&#039;&#039;&#039;-klassen. Medlemmarna och egenskaperna nedan visar vad som är tillgängligt inom den barnklass som härleds från den inbyggda &#039;&#039;&#039;Exception&#039;&#039;&#039;-klassen.  === Exempel #1 Den inbyggda Exception-klassen ===  &lt;pre&gt; &lt;?php class Exception implements Throwable {     protected $message = &#039;Okänt undantag&#039;;   // undantagsmeddelande     private   $string;...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=Ut%C3%B6ka_undantag&amp;diff=3308&amp;oldid=prev"/>
		<updated>2024-08-20T08:52:37Z</updated>

		<summary type="html">&lt;p&gt;Skapade sidan med &amp;#039;== Utöka undantag ==  En användardefinierad undantagsklass kan definieras genom att utöka den inbyggda &amp;#039;&amp;#039;&amp;#039;Exception&amp;#039;&amp;#039;&amp;#039;-klassen. Medlemmarna och egenskaperna nedan visar vad som är tillgängligt inom den barnklass som härleds från den inbyggda &amp;#039;&amp;#039;&amp;#039;Exception&amp;#039;&amp;#039;&amp;#039;-klassen.  === Exempel #1 Den inbyggda Exception-klassen ===  &amp;lt;pre&amp;gt; &amp;lt;?php class Exception implements Throwable {     protected $message = &amp;#039;Okänt undantag&amp;#039;;   // undantagsmeddelande     private   $string;...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Utöka undantag ==&lt;br /&gt;
&lt;br /&gt;
En användardefinierad undantagsklass kan definieras genom att utöka den inbyggda &amp;#039;&amp;#039;&amp;#039;Exception&amp;#039;&amp;#039;&amp;#039;-klassen. Medlemmarna och egenskaperna nedan visar vad som är tillgängligt inom den barnklass som härleds från den inbyggda &amp;#039;&amp;#039;&amp;#039;Exception&amp;#039;&amp;#039;&amp;#039;-klassen.&lt;br /&gt;
&lt;br /&gt;
=== Exempel #1 Den inbyggda Exception-klassen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Exception implements Throwable&lt;br /&gt;
{&lt;br /&gt;
    protected $message = &amp;#039;Okänt undantag&amp;#039;;   // undantagsmeddelande&lt;br /&gt;
    private   $string;                        // __toString cache&lt;br /&gt;
    protected $code = 0;                      // användardefinierad undantagskod&lt;br /&gt;
    protected $file;                          // källfilnamn för undantaget&lt;br /&gt;
    protected $line;                          // källrad för undantaget&lt;br /&gt;
    private   $trace;                         // bakspårning&lt;br /&gt;
    private   $previous;                      // föregående undantag om det är nästlat&lt;br /&gt;
&lt;br /&gt;
    public function __construct($message = &amp;#039;&amp;#039;, $code = 0, Throwable $previous = null);&lt;br /&gt;
&lt;br /&gt;
    final private function __clone();         // Förhindrar kloning av undantag.&lt;br /&gt;
&lt;br /&gt;
    final public  function getMessage();      // meddelande om undantag&lt;br /&gt;
    final public  function getCode();         // kod för undantag&lt;br /&gt;
    final public  function getFile();         // källfilnamn&lt;br /&gt;
    final public  function getLine();         // källrad&lt;br /&gt;
    final public  function getTrace();        // en array av bakspårningen&lt;br /&gt;
    final public  function getPrevious();     // föregående undantag&lt;br /&gt;
    final public  function getTraceAsString();// formaterad sträng av spårningen&lt;br /&gt;
&lt;br /&gt;
    // Kan åsidosättas&lt;br /&gt;
    public function __toString();             // formaterad sträng för visning&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Om en klass utökar den inbyggda &amp;#039;&amp;#039;&amp;#039;Exception&amp;#039;&amp;#039;&amp;#039;-klassen och omdefinierar konstruktorn, rekommenderas det starkt att den också anropar &amp;#039;&amp;#039;&amp;#039;parent::__construct()&amp;#039;&amp;#039;&amp;#039; för att säkerställa att all tillgänglig data har tilldelats korrekt. Metoden &amp;#039;&amp;#039;&amp;#039;__toString()&amp;#039;&amp;#039;&amp;#039; kan åsidosättas för att tillhandahålla en anpassad utdata när objektet presenteras som en sträng.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Notera:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Undantag kan inte klonas. Försök att klona ett undantag resulterar i ett fatalt &amp;#039;&amp;#039;&amp;#039;E_ERROR&amp;#039;&amp;#039;&amp;#039;-fel.&lt;br /&gt;
&lt;br /&gt;
=== Exempel #2 Utöka Exception-klassen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Definiera en anpassad undantagsklass&lt;br /&gt;
 */&lt;br /&gt;
class MyException extends Exception&lt;br /&gt;
{&lt;br /&gt;
    // Omdefiniera undantaget så att meddelandet inte är valfritt&lt;br /&gt;
    public function __construct($message, $code = 0, Throwable $previous = null) {&lt;br /&gt;
        // någon kod&lt;br /&gt;
&lt;br /&gt;
        // säkerställ att allt tilldelas korrekt&lt;br /&gt;
        parent::__construct($message, $code, $previous);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // anpassad strängrepresentation av objektet&lt;br /&gt;
    public function __toString() {&lt;br /&gt;
        return __CLASS__ . &amp;quot;: [{$this-&amp;gt;code}]: {$this-&amp;gt;message}\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public function customFunction() {&lt;br /&gt;
        echo &amp;quot;En anpassad funktion för denna typ av undantag\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Skapa en klass för att testa undantaget&lt;br /&gt;
 */&lt;br /&gt;
class TestException&lt;br /&gt;
{&lt;br /&gt;
    public $var;&lt;br /&gt;
&lt;br /&gt;
    const THROW_NONE    = 0;&lt;br /&gt;
    const THROW_CUSTOM  = 1;&lt;br /&gt;
    const THROW_DEFAULT = 2;&lt;br /&gt;
&lt;br /&gt;
    function __construct($avalue = self::THROW_NONE) {&lt;br /&gt;
&lt;br /&gt;
        switch ($avalue) {&lt;br /&gt;
            case self::THROW_CUSTOM:&lt;br /&gt;
                // kasta anpassat undantag&lt;br /&gt;
                throw new MyException(&amp;#039;1 är en ogiltig parameter&amp;#039;, 5);&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
            case self::THROW_DEFAULT:&lt;br /&gt;
                // kasta standardundantag.&lt;br /&gt;
                throw new Exception(&amp;#039;2 är inte tillåtet som parameter&amp;#039;, 6);&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
            default:&lt;br /&gt;
                // Inget undantag, objektet kommer att skapas.&lt;br /&gt;
                $this-&amp;gt;var = $avalue;&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Exempel 1&lt;br /&gt;
try {&lt;br /&gt;
    $o = new TestException(TestException::THROW_CUSTOM);&lt;br /&gt;
} catch (MyException $e) {      // Kommer att fångas&lt;br /&gt;
    echo &amp;quot;Fångade mitt undantag\n&amp;quot;, $e;&lt;br /&gt;
    $e-&amp;gt;customFunction();&lt;br /&gt;
} catch (Exception $e) {        // Hoppar över&lt;br /&gt;
    echo &amp;quot;Fångade standardundantag\n&amp;quot;, $e;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fortsätt körning&lt;br /&gt;
var_dump($o); // Null&lt;br /&gt;
echo &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Exempel 2&lt;br /&gt;
try {&lt;br /&gt;
    $o = new TestException(TestException::THROW_DEFAULT);&lt;br /&gt;
} catch (MyException $e) {      // Matchar inte denna typ&lt;br /&gt;
    echo &amp;quot;Fångade mitt undantag\n&amp;quot;, $e;&lt;br /&gt;
    $e-&amp;gt;customFunction();&lt;br /&gt;
} catch (Exception $e) {        // Kommer att fångas&lt;br /&gt;
    echo &amp;quot;Fångade standardundantag\n&amp;quot;, $e;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fortsätt körning&lt;br /&gt;
var_dump($o); // Null&lt;br /&gt;
echo &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Exempel 3&lt;br /&gt;
try {&lt;br /&gt;
    $o = new TestException(TestException::THROW_CUSTOM);&lt;br /&gt;
} catch (Exception $e) {        // Kommer att fångas&lt;br /&gt;
    echo &amp;quot;Standardundantag fångat\n&amp;quot;, $e;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fortsätt körning&lt;br /&gt;
var_dump($o); // Null&lt;br /&gt;
echo &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Exempel 4&lt;br /&gt;
try {&lt;br /&gt;
    $o = new TestException();&lt;br /&gt;
} catch (Exception $e) {        // Hoppar över, inget undantag&lt;br /&gt;
    echo &amp;quot;Standardundantag fångat\n&amp;quot;, $e;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fortsätt körning&lt;br /&gt;
var_dump($o); // TestException&lt;br /&gt;
echo &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
= Sidslut =&lt;br /&gt;
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.exceptions.extending.php&lt;br /&gt;
&amp;lt;BR&amp;gt;[[PHP]]&lt;br /&gt;
&amp;lt;BR&amp;gt;[[Språkreferens]]&lt;br /&gt;
&amp;lt;!-- &amp;lt;BR&amp;gt;[[Språkreferens#Uppräkningar]] --&amp;gt;&lt;br /&gt;
[[Kategori:Php]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på &lt;br /&gt;
https://www.linux.se/kontaka-linux-se/&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>