例外処理とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > 例外処理の意味・解説 

れいがい‐しょり〔レイグワイ‐〕【例外処理】

読み方:れいがいしょり

exception handlingコンピュータープログラム実行している時、想定外エラー割り込みがあった場合実行される処理のこと。


例外処理

読み方れいがいしょり
別名:エラーハンドリング
【英】exception handling

例外処理とは、プログラムの処理中に想定外エラー発生した際に実行される、そのエラーへの対処となる処理のことである。

例外処理は、多く場合プログラムデータ損失や、想定されていない処理が入力されたことなどを原因として発生する例えば、数字入力されることを想定して作成されプログラムに、ひらがな入力されると、プログラムそれ以上処理を続行できず、エラーとなる。そのようなときに例外処理が実行される

例外処理の処理内容は、プログラム内にあらかじめ用意しておく必要がある。例外処理が準備されていない場合エラー発生した際にどういった反応が起こるか予測できない無限に入出力繰り返したり、入力不可能になったりする場合もある。

C++Javaといったプログラミング言語は、プログラミング言語そのものが例外処理を想定して作られており、例外処理の作成比較的容易であるとされる


例外処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/08/17 05:32 UTC 版)

例外処理(れいがいしょり、英語: exception handling)とは、IT業界で用いられる専門用語で、ある抽象レベルにおけるシステムの設計で想定されておらず、ユーザー操作によって解決できない問題に対処するための処理である。例外処理の結果として問題が解決されないとシステム障害になる。システム停止やデータ破損の原因になり、ユーザーに損害を与える可能性があるため、システム開発で例外処理は重要視されている[1][2][3]


  1. ^ a b 第 5 章 例外処理 (C++ プログラミングガイド)”. docs.oracle.com. 2019年10月26日閲覧。
  2. ^ a b IPA ISEC セキュア・プログラミング講座:C/C++言語編 第6章 フェイルセーフ:体系だてたエラーハンドリング”. www.ipa.go.jp. 2019年10月26日閲覧。
  3. ^ a b エラー処理をパターンにはめよう”. Codezine. 2019年10月26日閲覧。
  4. ^ Bjarne Stroustrup. “Appendix E: Standard-Library Exception Safety in "The C++ Programming Language" (3rd Edition).Addison-Wesley, ISBN 0-201-88954-4”. 2013年5月1日閲覧。
  5. ^ Exception-Safety in Generic Components”. 2013年5月1日閲覧。
  6. ^ http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.asc
  7. ^ /EH (例外処理モデル)
  8. ^ ただし、例外処理中にもう一度別のデストラクタから例外が発生してしまうと復帰できなくなるため、デストラクタから例外を発生させるべきではないとされる。
  9. ^ 例外指定は、 C++関数によって伝達される例外の種類についてプログラマが意図したものを示す言語機能です。 Microsoft Docs Visual C++
  10. ^ C++17ではこの動的例外仕様が削除される。C++日本語リファレンス
  11. ^ class StopIteration Ruby 1.9.3 リファレンスマニュアル(2013年10月7日閲覧)。
  12. ^ 組み込み例外 Python 2.7ドキュメンテーション(2013年10月7日閲覧)。
  13. ^ module function Kernel.#throw Ruby 1.9.2 リファレンスマニュアル(2013年10月7日閲覧)。
  14. ^ たとえばCOMではメソッドの戻り値として、MAKE_HRESULT()マクロを用いてHRESULTコードを定義するが、異常系は負数となる。
  15. ^ CUDAのように列挙型で定義した正の数をエラーコードとして使用するライブラリもある。CUDA Runtime API :: CUDA Toolkit Documentation
  16. ^ GetFileSize 関数
  17. ^ GetFileSize function (Windows)
  18. ^ C言語規格のドラフト”. 2018年11月21日閲覧。



例外処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/17 21:54 UTC 版)

C SharpとJavaの比較」の記事における「例外処理」の解説

Javaは非チェック例外 (unchecked exception) に加えてチェック済み例外 (checked exception) をサポートするC#では非チェック例外のみである。チェック済み例外は、プログラマメソッドから発生し得るものを全て宣言し捕捉する必要がある全てのエラー処理されることを保証できるため、チェック済み例外は非常に便利だとする者もいる。一方C#設計者であるアンダース・ヘルスバーグのように、Javaチェック済み例外ある程度実験的な仕様であり、小さなプログラムでの例を除いて実装する価値見出せなかった、とする者もいる。一つ批判として、チェック済み例外プログラマが空のcatchブロック記述するのを促進しcatch (Exception e) {}のような危険なコード増やす結果になってしまったというものがある。また別の批判として、メソッド実装変更加えた結果新しチェック済み例外発生するうになる可能性があり、これによって契約破壊されてしまう、というものがある。これは限られた例外のみが宣言されインタフェース実装するメソッドや、メソッド内部実装変更され場合起こり得る中にはこのような予期しない例外発生することを見越しあらゆる型の例外発生し得る、と宣言 (throws Exception) するプログラマもいる。これはチェック済み例外利点を無にしている。しかしながらいくつかの場面では例外連鎖 (exception chaining)、すなわち捕捉し例外別の例外でラップして投げ直す、という手法適用できる例えば、ファイルアクセスするコードデータベースアクセスするよう変更され場合呼び出し側は内部何が行われているかを知る必要がないため、SQLExceptionが捕捉され場合でもIOExceptionとして投げ直すことが可能である。 try-finallyステートメントにおいても両者異なる。finally例えtryブロック内でthrowreturn実行され場合でも必ず実行される。これは、try内とfinally内で異なる値がreturnされた場合予期しない振る舞い生じことがあるC#ではfinallyブロック内ではreturnbreakといった文の実行禁止している。

※この「例外処理」の解説は、「C SharpとJavaの比較」の解説の一部です。
「例外処理」を含む「C SharpとJavaの比較」の記事については、「C SharpとJavaの比較」の概要を参照ください。


例外処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/10 00:54 UTC 版)

Go (プログラミング言語)」の記事における「例外処理」の解説

他の言語使われている方式の例外処理機能はない。Goにも例外があり、リカバー合わせてtry-catchのような事もできるが推奨されない例外機能は、主に0除算など起きてならないことに使われ普通は強制終了するが、リカバーによって強制終了ないようにする事も可能である。Goでは、事前に例外起きないよう確認する事や、成功かどうかBool値を返すのような例外起こさない方法好まれる

※この「例外処理」の解説は、「Go (プログラミング言語)」の解説の一部です。
「例外処理」を含む「Go (プログラミング言語)」の記事については、「Go (プログラミング言語)」の概要を参照ください。


例外処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/24 15:35 UTC 版)

Javaに対する批判」の記事における「例外処理」の解説

JavaではC++オプションとされていた例外処理の仕様取り込んだが、この際チェック対象例外対応するthrows文を必須とした。例外チェック小規模なシステムにとっては役立つが、大規模なシステムについて有益であるかどうかについては統一的な見解には至っていない。特に上位コードでは下位コードから発生するエラー意識したくない(例としては、名前解決例外であるNamingException)。名前クラス作成者名前解決例外チェック対象例外として上位コードに対応を強制するか、コンパイル時のチェック使わず下位コードからの例外連鎖的通知するかを選択する必要がある

※この「例外処理」の解説は、「Javaに対する批判」の解説の一部です。
「例外処理」を含む「Javaに対する批判」の記事については、「Javaに対する批判」の概要を参照ください。


例外処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/11 02:27 UTC 版)

Ruby」の記事における「例外処理」の解説

例外はなにか不具合起こったときraise呼び出し発生させることができる。Ruby での例外は Exception クラスか、そのサブクラスインスタンスである。 例外にはメッセージ追加するともできる raise "This is a message" さらに例外タイプ指定できる raise ArgumentError, "Illegal arguments!" 例外rescue節で処理することができ、次のようにコードrescue付加するだけである begin # 通常処理rescue # 例外処理。引数省略すると、StandardErrorサブクラス例外のみ処理するrescue SomeError # 例外処理。SomeErrorの例外のみ処理するensure # 例外発生関わらず必ず実行される処理else # 例外発生しなかったときに実行される処理end

※この「例外処理」の解説は、「Ruby」の解説の一部です。
「例外処理」を含む「Ruby」の記事については、「Ruby」の概要を参照ください。


例外処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 08:56 UTC 版)

IEEE 754」の記事における「例外処理」の解説

IEEE 754-2008では5種類の例外が定義されている。それぞれ、(確定的なアンダーフロー除いて対応する状態フラグ存在し例外発生時には対応するフラグ設定されるそれ以外動作定義されていないが、デフォルト下記以外の追加対処推奨されている(後述)。 5種類内訳以下のとおりである。 無効な演算負数に対して平方根求めようとしたなど) - デフォルトではqNaNを返す0除算(1/0 や log(0) など) - デフォルトでは ±∞ を返すオーバーフロー結果正しく表現できないほど大きくなった場合) - 最近接丸めモード場合デフォルトでは ±∞ を返すアンダーフロー結果正規数表現できないほどに小さく非0であるが不正確な結果となった場合) - デフォルトでは非正規化数返す不正確 - デフォルトでは指定されモード丸め施した結果返す。 これらは、IEEE 754-1985と同一である。ただし、IEEE 754-1985 ではゼロ除算例外除算のみだったが、IEEE 754-2008 ではそれ以外演算でも発生する

※この「例外処理」の解説は、「IEEE 754」の解説の一部です。
「例外処理」を含む「IEEE 754」の記事については、「IEEE 754」の概要を参照ください。


例外処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/14 08:30 UTC 版)

キーワード (Java)」の記事における「例外処理」の解説

例外処理はC言語にはない。Javaでは、C++およびC#とほぼ共通の構文およびキーワードが使用されている。ただしfinallyC++には存在せず、throwsはC#には存在しないtry, catch, finally例外発生しうる箇所使用するtryブロック (try{と}との間) で例外発生しうるコード囲みcatchブロック (catch(Throwableの派生クラス例外オブジェクト){と}との間) に例外発生後の処理を書く。finallyブロック (finally{と}との間) には、ファイルクローズ、データベースセッションの切断ログアウトなど、例外発生有無かかわらずtry/catchブロック内の処理を終了する前に必ず実行しておきたいコードを書く。catch記述した場合finally省略可能であり、finally記述した場合catch省略可能である。try/catchブロックfinallyブロック両方return文がある場合後者優先されるcatchブロックにはif-else-if文のように連続して捕捉したい例外記述することができる。 throw例外発生させる。 throwsメソッド宣言使用される。そのメソッドどのような例外スローするかを列挙するJavaにおける例外種類には大きく分けて throws の明示必要な例外必要でない例外がある。前者は主にファイルエラーなどプログラム動作中にその都度対応すべき例外で、後者は主に開発デバッグ段階対処すべき例外あるいは深刻なエラーである。 以下はIOExceptionを使った記述例である。 public void method() throws Exception { // メソッド例外スローすることを宣言 try { ... if (エラー条件) throw new IOException(); // 例外発生させる。 // (1) 正常終了 // このtryブロックにはreturn文記述するともできる。 // ただし、finallyブロックにすでにreturn文があるときは、ここにreturn文書いてfinallyブロックreturn優先される。 } catch (IOException e) { // IOException は Java例外クラス1つ // (2) 例外処理 // このcatchブロックにはreturn文記述するともできる。 // ただし、finallyブロックにすでにreturn文があるときは、ここにreturn文書いてfinallyブロックreturn優先される。 } catch (Exception e) { // IOException よりも上位(親)の例外クラス // (3) 例外をさらに外のブロックスローする。 throw e; } finally { // (1), (2), (3) どの場合でもこのブロックは必ず実行される。 // ここにreturn文があるときはtry/catchブロックreturn文があろうともこちらのreturn文優先される。 ... }}

※この「例外処理」の解説は、「キーワード (Java)」の解説の一部です。
「例外処理」を含む「キーワード (Java)」の記事については、「キーワード (Java)」の概要を参照ください。

ウィキペディア小見出し辞書の「例外処理」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「例外処理」の関連用語

例外処理のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



例外処理のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
PHPプロ!PHPプロ!
©COPYRIGHT ASIAL CORPORATION ALL RIGHTS RESERVED.
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2024 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリ例外処理の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの例外処理 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのC SharpとJavaの比較 (改訂履歴)、Go (プログラミング言語) (改訂履歴)、Javaに対する批判 (改訂履歴)、Ruby (改訂履歴)、IEEE 754 (改訂履歴)、キーワード (Java) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS