PHP 8.5.0 Released!

The DomainException class

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

Introduction

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

Class synopsis

class DomainException extends LogicException {
/* Inherited properties */
protected string $message = "";
private string $string = "";
protected int $code ;
protected string $file = "";
protected int $line ;
private array $trace = [];
private ?Throwable $previous = null;
/* Inherited methods */
public Exception::__construct (string $message = "", int $code = 0, ? Throwable $previous = null )
final public Exception::getMessage (): string
final public Exception::getCode (): int
final public Exception::getFile (): string
final public Exception::getLine (): int
final public Exception::getTrace (): array
}

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 4 notes

up
35
mateusz dot charytoniuk at gmail dot com
14 years ago
<?php
function 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
17
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 error
When datatype is wrong, the better way is throwing InvalidArgumentException. 
<?php
// Here, use InvalidArgumentException
function 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:
<?php
class 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
11 years ago
<?php
function 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_domain
This exception has confused me a bit, DataDomainException, or DataTypeException may have been more descriptive.
+add a note

AltStyle によって変換されたページ (->オリジナル) /