定義済みの例外

目次

SPL の例外 も参照ください。

Exception

はじめに

Exception は、 すべてのユーザー例外の基底クラスです。

クラス概要

Exception implements Throwable
/* プロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* メソッド */
public Exception::__construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string Exception::getMessage()
final public Throwablenull Exception::getPrevious()
final public int Exception::getCode()
final public string Exception::getFile()
final public int Exception::getLine()
final public array Exception::getTrace()
final public string Exception::getTraceAsString()
public string Exception::__toString()
private void Exception::__clone()

プロパティ

message

例外メッセージ

code

例外コード

file

例外が作られたファイル名

line

例外が作られた行

previous

直前にスローされた例外

string

スタックトレースを示す文字列

trace

スタックトレースを示す配列

ErrorException

はじめに

エラー例外です。

クラス概要

ErrorException
extends Exception
/* プロパティ */
protected int $severity = E_ERROR;
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* メソッド */
public ErrorException::__construct(
    string $message = "",
    int $code = 0,
    int $severity = E_ERROR,
    stringnull $filename = null,
    intnull $line = null,
    Throwablenull $previous = null
)
final public int ErrorException::getSeverity()
/* 継承したメソッド */
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

プロパティ

severity

例外の深刻度

例1 set_error_handler を使用した、エラーメッセージから ErrorException への変換

<?php
function exception_error_handler(int $errnostring $errstrstring $errfile nullint $errline) {
    if (!(
error_reporting() & $errno)) {
        
// このエラーコードが error_reporting に含まれていない場合
        
return;
    }
    throw new 
\ErrorException($errstr0$errno$errfile$errline);
}
set_error_handler(exception_error_handler(...));
// PHP 8.1.0 より前のバージョン、つまり 第一級callableを生成する記法 が実装される前は、下記の呼び出しが必要です
// set_error_handler(__NAMESPACE__ . "\\exception_error_handler");

/* 例外を発生させます */
strpos();
?>

上の例の出力は、 たとえば以下のようになります。

Fatal error: Uncaught exception 'ErrorException' with message 'strpos() expects at least 2 parameters, 0 given' in /home/bjori/tmp/ex.php:12
Stack trace:
#0 [internal function]: exception_error_handler(2, 'strpos() expect...', '/home/bjori/php...', 12, Array)
#1 /home/bjori/php/cleandocs/test.php(12): strpos()
#2 {main}
  thrown in /home/bjori/tmp/ex.php on line 12

ClosedGeneratorException クラス

はじめに

ClosedGeneratorException は 閉じられた Generator から値を取得しようとした場合にスローされます。

クラス概要

ClosedGeneratorException
extends Exception
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

Error

はじめに

Error は、PHP のすべての内部エラーの基底クラスです。

クラス概要

Error implements Throwable
/* プロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* メソッド */
public Error::__construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string Error::getMessage()
final public Throwablenull Error::getPrevious()
final public int Error::getCode()
final public string Error::getFile()
final public int Error::getLine()
final public array Error::getTrace()
final public string Error::getTraceAsString()
public string Error::__toString()
private void Error::__clone()

プロパティ

message

エラーメッセージ

code

エラーコード

file

エラーが発生したファイル名

line

エラーが発生した行番号

previous

直前にスローされた例外

string

スタックトレースを示す文字列

trace

スタックトレースを示す配列

ArgumentCountError

はじめに

ArgumentCountError は、 ユーザー定義の関数あるいはメソッドに渡された引数が少なすぎる場合にスローされます。

可変長引数でない組み込み関数に、多過ぎる引数を渡した場合にもスローされます。

クラス概要

ArgumentCountError
extends TypeError
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public Error::__construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string Error::getMessage()
final public Throwablenull Error::getPrevious()
final public int Error::getCode()
final public string Error::getFile()
final public int Error::getLine()
final public array Error::getTrace()
final public string Error::getTraceAsString()
public string Error::__toString()
private void Error::__clone()

ArithmeticError

はじめに

ArithmeticError は、数学的な操作でエラーが発生した場合にスローされます。 たとえばマイナスのビットシフトを行おうとした場合などに発生します。 また、結果が int の範囲をこえてしまうような intdiv の呼び出しの際にも発生します。

クラス概要

ArithmeticError
extends Error
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

AssertionError

はじめに

AssertionError は、assert によるアサーションが失敗したときにスローされます。

クラス概要

AssertionError
extends Error
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

DivisionByZeroError

はじめに

DivisionByZeroError は、数値をゼロで割ろうとした場合にスローされます。

クラス概要

DivisionByZeroError
extends ArithmeticError
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public Error::__construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string Error::getMessage()
final public Throwablenull Error::getPrevious()
final public int Error::getCode()
final public string Error::getFile()
final public int Error::getLine()
final public array Error::getTrace()
final public string Error::getTraceAsString()
public string Error::__toString()
private void Error::__clone()

CompileError

はじめに

CompileError は コンパイルエラーが起きた時にスローされます。 以前は fatal error が発生していました。

クラス概要

CompileError
extends Error
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

ParseError

はじめに

ParseError は、eval を呼んだときなどの PHP コードのパースに失敗した場合にスローされます。

注意: PHP 7.3.0 以降は、ParseError クラスは CompileError クラスを継承するようになりました。 以前のバージョンでは、Error を継承していました。

クラス概要

ParseError
extends CompileError
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public Error::__construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string Error::getMessage()
final public Throwablenull Error::getPrevious()
final public int Error::getCode()
final public string Error::getFile()
final public int Error::getLine()
final public array Error::getTrace()
final public string Error::getTraceAsString()
public string Error::__toString()
private void Error::__clone()

TypeError

はじめに

TypeError がスローされるのは、以下の場合です:

  • クラスのプロパティに設定されている値が、プロパティで宣言されている型と一致しない場合。
  • 関数に渡された引数の型が、関数の宣言時に指定された型と一致しない場合。
  • 関数の戻り値の型が、関数の宣言時に指定された型と一致しない場合。

クラス概要

TypeError
extends Error
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

変更履歴

バージョン 説明
7.1.0 strict モードの場合に、 PHP の組み込みの関数に渡す引数の数を間違えた場合でも、 TypeError はスローされなくなりました。 代わりに、 ArgumentCountError がスローされるようになっています。

ValueError

はじめに

ValueError は、 引数の型は正しいものの、値が正しくない場合にスローされます。 たとえば、関数は正の整数を期待しているのに負の値を渡したり、 空でない文字列/配列を期待しているのに空の値を渡したりした場合です。

クラス概要

ValueError
extends Error
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

UnhandledMatchError

はじめに

UnhandledMatchError は、 match 式がどの分岐でも処理できなかったことを検知した場合にスローされます。

クラス概要

UnhandledMatchError
extends Error
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

FiberError

はじめに

FiberError は、 Fiber に対して不正な操作が行われた場合にスローされます。

クラス概要

final FiberError
extends Error
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* メソッド */
public FiberError::__construct()
/* 継承したメソッド */
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()