プログラミング、フリーダイビング、ブロックチェーンのブログ

プログラミング道場

私がオススメするプログラミング教材です

私がおすすめするプログラミング教材のまとめ【書籍】

目次1 これからエンジニアになりたい人へ向けた本2 プログラミング言語3 アプリ開発4 サーバー、インフラ、セキュリティなど5 機械学習系6 ゲーム開発7 データベース8 デザイン9 組織作り10 自作シリーズ11 その他12 おまけ これ ...

続きを見る

【PHP入門】Exceptionクラスの説明と例外処理

更新日:

記事の内容


この記事では、PHPの例外処理について説明します。
PHPのバージョンは、7系です。

Exceptionとは何か?

プログラムの実行中に発生するエラーのことを例外といいます。
PHPでは、この例外をExceptionクラスで扱います。
Exceptionは例外の内容を表すメッセージや、プログラムのどこで例外が発生したかなどの情報を持ちます。

具体的には、こういったことが例外と言われます。

  • データベースに接続ができない
  • Web APIにアクセスできない
  • ファイルシステムのI/Oエラー

Exceptionの種類

定義済みの例外

Exception

すべてのユーザー例外の基底クラスとなります。

ErrorException

エラー例外です。

Error

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

ArgumentCountError

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

ArithmeticError

数学的な操作でエラーが発生した場合にスローされます。

AssertionError

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

DivisionByZeroError

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

CompileError

コンパイルエラーが起きた時にスローされます。

ParseError

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

TypeError

TypeError がスローされるのは、以下の三つの場合です。
まず、関数に渡された引数の型が、関数の宣言時に指定された型と一致しない場合。
次に、関数の戻り値の型が、関数の宣言時に指定された型と一致しない場合。
そして、PHP 組み込みの関数に渡す引数の数を間違えた場合 (これは、strict モードの場合に限ります)。

Standard PHP Library(SPL)例外

BadFunctionCallException

未定義の関数をコールバックが参照したり、引数を指定しなかったりした場合にスローされる例外です。

BadMethodCallException

未定義のメソッドをコールバックが参照したり、引数を指定しなかったりした場合にスローされる例外です。

DomainException

定義したデータドメインに値が従わないときにスローされる例外です。

InvalidArgumentException

引数の型が期待する型と一致しなかった場合にスローされる例外です。

LengthException

長さが無効な場合にスローされる例外です。

LogicException

プログラムのロジック内でのエラーを表す例外です。
この類の例外が出た場合は、自分が書いたコードを修正すべきです。

OutOfBoundsException

値が有効なキーでなかった場合にスローされる例外です。
これは、コンパイル時には検出できないエラーです。

OutOfRangeException

無効なインデックスを要求した場合にスローされる例外です。
これは、コンパイル時に検出しなければなりません。

OverflowException

いっぱいになっているコンテナに要素を追加した場合にスローされる例外です。

RangeException

プログラムの実行時に範囲エラーが発生したことを示すときにスローされる例外です。
通常は、アンダーフローやオーバーフロー以外の計算エラーが発生したことを意味します。

RuntimeException

実行時にだけ発生するようなエラーの際にスローされます。

UnderflowException

空のコンテナ上で無効な操作 (要素の削除など) を試みたときにスローされる例外です。

UnexpectedValueException

いくつかの値のセットに一致しない値であった際にスローされる例外です。
これが発生する例としては、ある関数が別の関数をコールしていて、 その関数の返り値が特定の型や値である (そして計算やバッファ関連のエラーがない) ことを想定している場合があります。

Exceptionの使用方法

例外を投げるには、「throw」というキーワードを使います。
そして、その例外を捕捉するには、例外が投げられるコードをtryブロックで囲み、それに対応するcatchブロックを記述します。
そして、finallyは、例外が起きても起きなくても、必ず実行されます。
なお、tryの中にある「throw」が発生した場合、「throw」以降のプログラムは読み込まれません。

では、実際に例を見ていきたいと思います。

基本的なtryの使い方

ネストしたtryの使い方

tryは、ネストして使うこともできます。
一度、catchした例外を改めてthrowする時もあります。
一度、例外を補足した上で、何からの修正を施した上で、さらにプログラムを実行したい時に使います。
その時には、tryをさらにtryで囲ってやります。

独自の例外クラスを作成する方法

既存の例外クラスを継承して、独自の例外クラスを作成することもできます。

Exceptionクラスを継承

別のクラスを継承

上記で説明したように、例外クラスはException以外にも多くあります。
そして、その他のクラスを継承して、独自の例外クラスを作成することができます。
ここでは、LogicExceptionを継承して独自の例外クラスを作成しています。

複数の例外クラスを扱う場合には、catchを書く際に必ず子供の例外クラスから書くようにしましょう。
そうしないと、全ての例外を親例外クラスである「Exception」がcatchしてしまうので、細かく例外処理を記述する意味がなくなってしまいます。

PHPをより詳しく勉強したい人には、この記事がオススメです

PHPの学習でおすすめの本と動画【2024年最新】

▼ Laravelについてはこの記事で、バージョンごとに紹介しています 目次1 動画教材2 初心者向け【入門編】3 中級者向け 動画教材 【PHP入門】2ちゃんねる掲示板クローンを作りながらPHPとMySQLの基礎と本質をマスターするPHP ...

続きを見る


Laravelをより詳しく勉強したい人には、この記事がオススメです

Laravelの学習でおすすめの本と動画【2024年最新】

目次1 動画教材2 Laravel63 Laravel84 Laravel9 動画教材 【Laravel】【Vue.js3】で【CRM(顧客管理システム)】をつくってみよう ▼ 興味がある方は、画像をクリック 受講者向けアンケートでご要望の ...

続きを見る


WordPressをより詳しく勉強したい人には、この記事がオススメです

WordPressの学習でおすすめの本【2023年最新】

目次1 初心者向け2 中級者向け 初心者向け いちばんやさしいWordPressの教本 第4版 5.x対応 これからワードプレスを始める初心者にオススメの本です。 手早くサイトを作りたい人は、この本を買いましょう^^ 非常にわかりやすいです ...

続きを見る


Rubyをより詳しく勉強したい人には、この記事がオススメです

Rubyの学習でおすすめの本と動画【2024年最新】

▼ Ruby on Railsについては、この記事で紹介しています 目次1 動画教材2 初心者向け【入門編】3 中級者向け4 上級者向け 動画教材 "ちゃんと" Ruby を学ぼう! ー オブジェクト指向機能ってなんだ? ▼ 興味がある方は ...

続きを見る


Javaをより詳しく勉強したい人には、この記事がオススメです

Javaの学習でおすすめの本と動画【2024年最新】

▼ Spring Bootの勉強をしたい人には、この記事がおすすめです 目次1 動画教材2 初心者向け3 中級者向け 動画教材 動画でわかる Java入門講座 基本~オブジェクト編 ▼ 興味がある方は、画像をクリックして下さい 「初心者向け ...

続きを見る


Gitをより詳しく勉強したい人には、この記事がオススメです

Gitの学習でおすすめの本と動画【2024年最新】

目次1 動画教材2 漫画?でわかりやすく学ぶ入門書の定番3 初心者向け4 中級者向け5 上級者向け 動画教材 もう怖くないGit!チーム開発で必要なGitを完全マスター ▼ 興味がある方は、画像をクリック Gitの基本コマンド、ブランチやマ ...

続きを見る


Perlをより詳しく勉強したい人には、この記事がオススメです

Perlの学習でおすすめの本と動画【2024年最新】

目次1 動画教材2 初心者向け3 中級者向け 動画教材 Learn Perl 5 By Doing It ▼ 興味がある方は、画像をクリック 英語版です。 Webスクレイピングからデータの修正まで、実際に使えるPerlプログラムを作成しなが ...

続きを見る


ゼロからWebエンジニアになりたい人には、この記事がオススメです

ゼロからWebエンジニアとして就職する方法【何もない自分に積み上げていく】

ちまたには、「エンジニアになるための情報」で溢れかえっています。 ジョージさんが考える「Webエンジニアになる方法」を教えて下さい。 目次1 私が定義するWebエンジニア2 必ずやるべきこと3 推奨されること4 まとめ 私が定義するWebエ ...

続きを見る


独学で実務っぽい経験を積みたい人には、この記事がオススメです

エンジニアが独学で実務経験っぽいことを学ぶ方法

エンジニアとして就職するためには実務経験が大事だと聞いていますが、就職しないことには実務経験を積むことができません。 どうやって、最初の実務経験を積んだらいいでしょうか? 目次1 スクールの理想と現実2 IT業界が抱える矛盾点3 擬似的に実 ...

続きを見る

-PHP, プログラミング

Copyright© プログラミング道場 , 2024 All Rights Reserved Powered by AFFINGER4.