La classe OutOfRangeException

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

Introduction

Exception émise lorsqu'un index illégal est demandé. Elle représente les erreurs qui devraient être détectées au moment de la compilation.

Synopsis de la classe

OutOfRangeException extends LogicException {
/* Propriétés héritées */
protected string $message;
protected int $code;
protected string $file;
protected int $line;
/* Méthodes héritées */
public Exception::__construct(string $message = "", int $code = 0, Throwable|null $previous = null)
final public Exception::getMessage(): string
final public Exception::getPrevious(): Throwable|null
final public Exception::getCode(): int
final public Exception::getFile(): string
final public Exception::getLine(): int
final public Exception::getTrace(): array
final public Exception::getTraceAsString(): string
public Exception::__toString(): string
final private Exception::__clone(): void
}
add a note add a note

User Contributed Notes 3 notes

up
1
Free
3 years ago
I tried to write a snippet that would be detected at compile time, but was unable, apparently due to my PHP engine's interpreted nature. The creator(s) should have provided a usage example (for end-users) or pointed to PHP sources for an example of where/how it's used. None of the provided examples, to date, reflect an exception detected at compile time, as this class asserts.

IMO it's hopeful at best to expect a compiler to detect an illegal index in a dynamically-typed, typically JIT-executed, enviro. Since when is there a strict contract of what indexes should be considered "within range" and how would the compiler know about this contract? Also, how would we try/catch that in the compile phase?

SPL also provides the OutOfBounds exception. If this class, its parent, and OOB have little distinction, then does SPL need all 3?
up
0
Jakub
6 years ago
I see this in this way:
By definiton, OutOfRangeException should be use to when potential problem is logical - occurs because of wrong code or definition. OutOfBoundsException is for runtime.

Example (see also note in "OutOfBoundsException class" article):
<?php
function prepareData(PDOStatement $s) {
   
$x = $s->fetch();
    if (!isset(
$x['secretColumn']))
        throw new
OutOfRangeException ("Secret column doesn't exist! Verify table definition and query.");
}
up
0
evguenia dot chagnon at gmail dot com
7 years ago
Exemple :

$calendar = new Calendar();
$calendar->getMonth(15);
To Top