Walidacja danych w klasie wyjątku

Bardzo często jakiś wyjątek jest rzucany za każdym razem tak samo. Mam na myśli identyczną konstrukcję warunkową. Czy nie lepiej jest wtedy przenieść logiki do klasy wyjątku, skoro tak bardzo jest z nią „zżyta”. Oto moje rozwiązanie.

Na początek

Prosty kod

Zobaczmy kod, który na pewno często można spotkać:

[php]
if (null === $a)
{
throw new NullException();
}

class NullException extends Exception {}[/php]

Taki kod najprawdopodobniej znajdzie się w kilku miejscach naszego skryptu. Skoro zawsze NullException jest rzucany po takim warunku, to może warto jest przenieść ten warunek do klasy wyjątku?

Klasa wyjątku

[php]class NullException extends Exception {
const MSG = ‚Oczekiwano wartości innej niż null’;
static public function isNull( $data )
{
if (null === $data)
{
throw new self(self::MSG);
}
}
}
$a = null;
NullException::isNull($a);[/php]

Czy konstrukcja typu

[php]NullException::isNull($a);[/php]

nie jest przyjemniejsza niż 4-liniowy if (no można zapisać w 2 liniach)? Według mnie jest. Choć to już jest kwestia gustu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *