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