The DomainException class

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Introduzione

Exception thrown if a value does not adhere to a defined valid data domain.

Sommario della classe

class DomainException extends LogicException {
/* Proprietà ereditate */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Metodi ereditati */
public Exception::__construct(string $message = "", int $code = 0, ?Throwable $previous = null)
final public Exception::getCode(): int
final public Exception::getFile(): string
final public Exception::getLine(): int
final public Exception::getTrace(): array
}
add a note

User Contributed Notes 4 notes

up
35
mateusz dot charytoniuk at gmail dot com
13 years ago
<?phpfunction renderImage($imageResource, $imageType){  switch ($imageType) {  case 'jpg':  case 'jpeg':    header('Content-type: image/jpeg');    imagejpeg($imageResource);    break;  case 'png':    header('Content-type: image/png');    imagepng($imageResource);    break;  default:    throw new DomainException('Unknown image type: ' . $imageType);    break;  }  imagedestroy($imageResource);}?>
up
16
ja2016 at wir dot pl
8 years ago
I think this kind of exception is perfect to throw when expected the  type of parameter, value etc. is good, but its value is out of domain. Look at RangeException:>>Exception thrown to indicate range errors during program execution. Normally this means there was an arithmetic error other than under/overflow. This is the runtime version of DomainException.<<So, this kind of exception is designed for logic errorWhen datatype is wrong, the better way is throwing InvalidArgumentException. <?php// Here, use InvalidArgumentExceptionfunction media($x) {    switch ($x) {        case image:            return 'PNG';        break;        case video:            return 'MP4';        break;        default:            throw new InvalidArgumentException ("Invalid media type!");    }}?>This is completly diffirent situation than this:<?php// Here, use DomainException$object = new Library ();try {    $object->allocate($x);} catch (toFewMin $e) {    throw new DomainException ("Minimal value to allocate is too high").}?>The simillar situation, but problem occurs during runtime:<?phpclass library {    function allocate($x) {        if ($x<1000)            throw new RangeException ("Value is too low!")    }}?>Summary: DomainException corresponds to RangeException and we should use them in simillar situations.  But first exception is designed to use when we are sure the problem is with our project, third-part elements etc. (simply: logical error), the second way is designed to use when we are sure the problem is with input data or environment (simply: runtime error).
up
14
chmielewski dot thomas at gmail dot com
10 years ago
<?phpfunction divide($divident, $divisor) {    if(!is_numeric($divident) || !is_numeric($divisor)) {        throw new InvalidArgumentException("Function accepts only numeric values");    }    if($divisor == 0) {        throw new DomainException("Divisor must not be zero");    }    return $divident / $divisor;}
up
5
Cruiser
7 years ago
Quote: "In data management and database analysis, a data domain refers to all the values which a data element may contain."Source: https://en.wikipedia.org/wiki/Data_domainThis exception has confused me a bit, DataDomainException, or DataTypeException may have been more descriptive.
To Top