約 60,798 件
https://w.atwiki.jp/yumetore/pages/31.html
例外とは、プログラム動作における予期せぬエラーの事を言う。 Javaでは例外が発生した時、あらかじめ用意されているエラーメッセージ (Exception in thread "main" java.lang.ArithmeticException ・・・など) を表示しプログラムを終了します。 これがJavaのデフォルトの例外処理です。Javaではデフォルトの例外処理以外にエラー メールの送信、エラーログの生成、強制終了処理の実行といった任意の例外処理を付け加 えることができます。 以下はJavaで例外処理を行う上で使用するキーワードです。 「例外をスローする」 Javaではエラーが発生した際、例外オブジェクトというエラー情報を保有したオブジェクト を生成し、そのオブジェクトをJava実行システムに渡します。この処理を「例外をスローする」 と言います。 「例外ハンドラ」 エラーメールを送信する、エラーログを生成するなどの例外処理が記述された部分を「例外ハン ドラ」と言います。 「例外をキャッチする」 Java実行システムが例外ハンドラを見つけることを 「例外をキャッチする」と言います。 (引用:http //www.javaroad.jp/java_exception1.htm)
https://w.atwiki.jp/javastudy/pages/32.html
第7章 ★例外 ■例外と例外処理 Exception(例外)…プログラム実行時に起こるエラー 例外処理を行うことで異常終了を防ぐ Javaでは例外が起こると自動的に例外クラスのオブジェクト(Exceptionクラスとサブクラス)が生成される ■例外処理の方法 try {例外が起こりそうな処理} catch(例外クラス名 変数名) {例外発生時に行う処理} finally{処理} ■throuws節 例外が起こりそうなメソッドの処理 try { a(b); int b = 1; } catch(Exception e) { } void a(int b) throws Exception { } ■ サンプルプログラム class Main { public static void main(String[] args) { try { back(args[0]); } catch(Exception e){ System.out.println("コマンドライン引数がありません"); } finally { System.out.println("終了します"); } } static void back(String a) throws Exception { System.out.println(a); } }
https://w.atwiki.jp/mierka/pages/23.html
例外はオブジェクト raiseメソッドは例外を発生させるメソッド 例外処理は、コードをbeginキーワードとendキーワードでラップし、特定のクラスの例外を捕捉するrescue節を追加する begin content = load_blog_data(file_name) rescue BlogDataNotFound STDERR.puts ファイル #{file_name} が見つかりません rescue BlogDataFormatError STDERR.puts #{file_name} 内のブログデータが壊れています rescue Exception = exc STDERR.puts ロード時の一般エラー #{file_name} #{exc.message} end
https://w.atwiki.jp/rtdb/pages/29.html
概要 プログラムがある処理を実行している途中でなんらかの異常が発生した場合に現在の処理を中断して別の処理を行うこと。その際に発生した異常のことを例外と呼ぶ。 何を持って「異常」とするかは様々であるが、次のようなものが挙げられる。 ハードウェアの故障 オペレーティングシステム等、システムの設定ミス ライブラリの欠損 割り当てられていない記憶領域へのアクセス 許されない演算(零での除算や実数演算で解が虚数になる演算など) 上位ほど重大で正常復帰させるのは難しい。3以上はDBの実装しだいで回避できるはず。 アンセーフコードで使うアンマネージドメモリはVirtualAllocで確保するため、確保できなかったときのエラー処理はわかりやすい。 問題はマネージドメモリの例外だ。これが発生する可能性はあらゆるところである。例えば 作業用のコレクションクラス DynamicMethod StringBuilder ... どれも便利で必須だがコード内のあらゆる場所に出現する。 これらのエラーが発生すべき場所を特定し、然るべき処理法を確立しなければならない。 foreachを使わずforを使う foreachはIEnumeratorを継承したクラス(参照)型オブジェクトを使う。 マネージドヒープから確保するためOutOfMemoryExceptionを発生させる可能性がある。 forでループカウンタを使ったほうがよいかと。 セーフコードをアンセーフコードに置き換え デバッグコード以外、全てアンセーフコードを駆使してOutOfMemoryの可能性を消す。 アンマネージドメモリ確保失敗する位置を限定させ、適切な復帰処理を入れる。 デバッグコードはセーフコードを使うことが多い。 これも可能であれば例外を発生させたくない。回避策としてエラーの対処が難しい、複雑、遅いと思われるところは前もって必要なメモリ量、要素数を計測しておきその後の処理でOutOfMemoryExceptionが理論上発生しない状態を作ってから処理する。 例えはList.Addは追加すべき要素数がわかっているならできるだけCapacityを増やすのに成功したら処理する。 内部で例外オブジェクトを送信するなら例外オブジェクトはあらかじめnewで作っておくなど。 INSERTの索引の追加時に重複エラーがあった場合例外はthrowせずにグローバル変数にエラーが有ったという情報のみを格納して重複追加する。 INSERT処理が終わったらそのフラグを見て重複エラーがあれば追加した行を全て削除して解放する。 重複エラーがない率が高ければ高速。 プログラム側でthrow new ...Exceptionする場合、このExceptionオブジェクト自体がOutOfMemoryすることがある。 それを考慮して例外を補足するが例外オブジェクトはあらかじめnewしておき使いまわすのもよい。 UPDATE連鎖,DELETE連鎖のための準備データは現在セーフコードを使っているためOutOfMemoryExceptionが発生する。成功すれば既に確保したアンセーフコードに対してのみ操作するから最後まで成功するはず。 しかしこれも処理高速化、例外の可能性を消すためにアンセーフコードにする。 UPDATE連鎖はアンセーフコード、マネージドメモリ共に途中でOutOfMemoryExceptionが発生する。
https://w.atwiki.jp/wiki8_anson/pages/27.html
例外 例外を発生させてみる 例外を捕まえてみる finallyを使ってみる htmlプラグインエラー このプラグインを使うにはこのページの編集権限を「管理者のみ」に設定してください。
https://w.atwiki.jp/chakimar/pages/27.html
ArrayStoreException:不正な型のオブジェクトをオブジェクトの配列に格納しようとしたときはじく IllegalArgumentException:不正な引数、または不適切な引数をメソッドに渡したときにはじく try{}の中に例外の発生しそうなソースを書き、catch{}の中に例外処理を書く try catchの後にfinally{}を作ると、例外の有無にかかわらず、最後に処理されるソースを書くことができる throwは独自の例外を作りたいときに使う Exceptionに投げたときにエラーメッセージを持たせたい throw new Exception("エラーメッセージ"); catch(Exception e){ System.out.println(e.getMessage()); } 独自のエラーを作る メッセージを持たせるのと持たせないのを作りたい public class NantokaException extends Exception{ public NantokaException(){ super(); } public NantokaException(String message){ super(message); } }
https://w.atwiki.jp/abwiki/pages/656.html
例外(れいがい)とは何らかのエラーが発生した状態のこと。 この時適切に処理する機構を例外処理と言う。 C++などのまっとうな言語には、 例外処理が組み込まれておりスマートな記述が可能。 N88-BASICでいうところの[ON ERROR GOTO]のこと。
https://w.atwiki.jp/atachi/pages/16.html
2つのカテゴリ [#s3642dbd] SystemException [#s0773bb3] WPFでの未処理の例外 LINQでの例外処理 try-catch-finallyによって投げられた例外を受け取り処理することができます。 try{ // ... 例外を発生させるような処理 var datas = new object[10]; var obj = datas[11]; // IndexOutOfRangeException 例外がスロー }catch(IndexOutOfRangeException e){ // 例外を対処するためのコード }catch(Exception e){ // 例外を対処するためのコード }finally{ // finallyブロックは、 // 例外が発生しなかった場合でも呼び出される。 } IndexOutOfRangeExceptionクラスはExceptionクラスをサブクラスに持つため、上記のように例外構文を記述した場合、両方の例外ブロックにマッチしますが、実行されるのは最初にマッチした例外ブロックのみです。 2つのカテゴリ [#s3642dbd] SystemException システムで使用される例外。ライブラリ間で共通されるべき例外。~ また、SystemExceptionをスーパークラスとして新たなシステム例外は作成してはいけません。 ApplicationException アプリケーション固有の例外。開発者はこの例外を外部にスローしないように気をつける。~ ライブラリ開発でやむを得ず独自の例外が必要となった場合は、発生理由や例外の回避方法、復旧方法をできるだけ詳しいドキュメントで公開しておくべき。 SystemException [#s0773bb3] 通常のプログラム開発に於いて、開発者が利用するであろうシステム例外は下記の通りです。 ArgumentException メソッドに渡された引数が無効である場合にスローする。ただし、nullである場合を除く。 ArgumentNullException メソッドに渡された引数に、nullが含まれている場合にスローする。 IndexOutOfRangeException 配列やプロパティで連続したデータの範囲外にアクセス使用とした場合にスローする。 NotImplementedException 実装されていないメソッドである場合にスローする。 NotImplementedException例外は、開発者が本来実装しなければならない実装を、一時的に後回しにしてしまう場合に、「まだ実装してないことをマークし、例外として警告する」ために使用します。 interface IDataAccess { bool SaveEntity(Person data); } public class BackendDataAccess IDataAccess { public bool SaveEntity(Person data) { // TODO 開発チーム「佐藤くん」が実装予定のメソッドなので、 // 今のところは未実装状態にしておきます。 throw new NotImplementedException(); } } } WPFでの未処理の例外 未処理の例外があった場合、Application.DispatcherUnhandledExceptionイベントが呼び出される。 Handledプロパティを設定しないと、永久にDispatcherUnhandledExceptionイベントが呼び出してしまう例外もあるので注意。 private void OnDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { e.Handled = true; // 例外を処理したことを通知 Shutdown(); // アプリケーションを終了 } LINQでの例外処理 LINQも例外を投げます。~ ただし、LINQは遅延実行を行うため、LINQを定義した場所に例外構文を記述するのではなくLINQを実行する箇所で例外をキャッチしなければなりません。 var b = from p in MyLists select p; foreach(Data obj in b){ Console.WriteLine(obj); } このように定義したLINQが実行時に発生する例外のキャッチには、次のようにforeachステートメントの部分で行います。 try{ foreach(Data obj in b) { Console.WriteLine(obj); } }catch(Exception e){ }
https://w.atwiki.jp/sevenlives/pages/684.html
try~catch文? スタック・トレース? 例外チェーン? 検査例外? 実行例外?
https://w.atwiki.jp/honeybe/pages/10.html
例外処理例外処理 例外識別子 UPDATE時の0件更新を検出する。 何かあればどうぞ。 例外処理 EXCEPTION WHEN 例外識別子 TEHN 例外処理... 例外処理 SQLCODE...エラーコード値。-値で取得できる。たとえば、ACCESS_INTO_NULLの場合、-6530が取得出来る。 ただし、ORA-01403(NO_DATA_FOUND)の場合は+100が取得できる。 SQLERRM...エラーメッセージ。引数付で呼び出した場合、引数に該当するエラーメッセージが取得できる。(SQLERRM(-6530)- ACCESS_INTO_NULLに該当するエラーメッセージ) 例外識別子 例外識別子 エラーコード 概要 ACCESS_INTO_NULL ORA-06530 未初期化オブジェクトに代入した COLLECTION_IS_NULL ORA-06531 コレクション未初期化 CURSOR_ALREADY_OPEN ORA-06511 カーソルが既にオープンされている DUP_VAL_ON_INDEX ORA-00001 キーが重複した INVALID_CURSOR ORA-01001 カーソルがオープンされていない INVALID_NUMBER ORA-01722 数値が正しくない LOGIN_DENIED ORA-01017 ログインできない NO_DATA_FOUND ORA-01403 SELECT INTO レコードなし NOT_LOGGED_ON ORA-01012 ログインできていない PROGRAM_ERROR ORA-06501 PL/SQL 内部エラー ROWTYPE_MISMATCH ORA-06504 互換性なし STORAGE_ERROR ORA-06500 PL/SQL メモリ不足 SUBSCRIPT_BEYOND_COUNT ORA-06533 コネクション要素オーバ SUBSCRIPT_OUTSIDE_LIMIT ORA-06532 有効範囲外添字 TIMEOUT_ON_RESOURCE ORA-00051 タイムアウト TOO_MANY_ROWS ORA-01422 複数行あり VALUE_ERROR ORA-06502 算術エラー ZERO_DIVIDE ORA-01476 ゼロの割り算 UPDATE時の0件更新を検出する。 SQL%NOTFOUNDがTRUEの時 何かあればどうぞ。 名前 コメント