• ベストアンサー

アサーションと例外処理の違いについて

アサーションと例外処理の違いは何ですか? あまり変わらないような気がするのですが?

質問者が選んだベストアンサー

  • ベストアンサー
  • kazsharp
  • ベストアンサー率37% (16/43)
回答No.3

動きのイメージで「あまり変わらないような気がする」というのは同感です。 逆に言うと、開発者が「意識的に区別」するべきものだと思います。 乱暴に言ってしまう、 アサーションはプログラムのバグを検出するもの (だから本番稼動時はオフにすることが多い)で、 例外は文字通り「例外」を検出するものです。 大事なのは「例外」の定義なのですが、 参考URLの内容を見ていただけるとわかるように 「アプリケーションで予想していない動き」 が例外です。 一方、「こんな状態は不正」だというのを 調べるのがアサーションではないでしょうか。

参考URL:
http://www.javaworld.jp/technology_and_programming/-/10249.html
全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

理解の範囲で簡単に。アサーションはアプリケーションで「論理的に起こりえない状態」をチェックするために使用します。バグが無く正しく動くことを検証するためのコードですね。

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/lang/assert.html
全文を見る
すると、全ての回答が全文表示されます。
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

例外処理は、常に有効です。 アサーションは有効・無効を切り替えることができます。 つまり、例外処理は、プログラムの動作に必要な部分です。 アサーションは主にデバッグのときに役立つ機能です。 ※そういえば私もアサーション使ったことなかったな。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 例外処理について

    C++初心者の者です。例外処理について質問があります。 例外処理の利点が明確に分かりません。 例外処理を使わなくても、if文でエラーを検出して、 エラー処理をすれば良いではないかと思ってしまいます。 例外処理が有効な状況を教えて頂ければ幸いです。 何卒、宜しくお願いします。

  • シグナルと例外の違い

    C言語ではシグナル、C++では例外という概念が存在しますが、 この2つに違いはあるのでしょうか? シグナルはシグナルハンドラで捕捉できるし、 例外もcatchして例外処理が可能ですし… どのような違いがあるか、お教えいただければ幸いです。

  • コーチングとアサーションの違いについて。

    話し方(聞き方?)についてどこかに学びに行きたいと思っているのですが、最近心理学を使ったコーチングとアサーションを良く聞きます。 この二つはどう違うのでしょうか? 誰か教えて下さらないでしょうか? コーチングはリーダーシップでよく取り入れると聞いていますけど、私は普段の生活(仕事の中とかも入りますけど)で上手く自分の意見を言えるという方法を学びたいと思ってます。 特別リーダーシップをとりたいとかではないので、果たしてコーチングは合っているのかどうか分かりません。 カルチャースクールではコーチングはよくあるのですが、アサーションはあまりなく、行こうかどうか迷ってます。 どうか、知識を貸して下さい。お願いします。

  • 例外処理

    デバッグをしてみました。 すると,try・catch文までしか実行されていないことがわかりました。 public void init() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } 例外処理について調べてはみたものの、なぜこの部分で実行が止まってしまうのか、 解決につながるようなことが,みつかりません。 1.例外処理はどのような処理なのか 2.なぜ、try・catchで実行が終了してしまうのか 教えてください。

    • ベストアンサー
    • Java
  • 例外処理の書き方がよく分かりません。

    例外処理の書き方がよく分かりません。 普通に書くと↓の(2)のところでエラーが出てしまうと思うのですが、こういった場合の例外処理の書き方が分かりません。 (1)の前に、 if(s2.length == 1) return; を書けば、エラーにはならないと思います。しかし、try catchやthrowsするのが普通のような気がしており、書き方が分かりません。 String str = "inu,neko"; String str2 = "inu"; String[] s = str.split(","); String[] s2 = str2.split(","); s[1].length(); s2[1].length();//(1)

    • ベストアンサー
    • Java
  • プログラムの例外処理について

    プログラムの例外処理について プログラムの例外処理で質問です。

  • C# の例外処理について

    こんにちは。 C#の例外処理について質問させてください。 ある関数の内部において、一般的な例外をユーザー定義の例外に変えて投げ、 この関数の利用者には必ずそのユーザー定義の例外を処理するよう強制したいと思っています。 しかし、C#で関数の利用者に例外処理を強制させる方法が見つかりません。 そもそも、関数の利用者からは、その関数でどのようなユーザー定義の例外が投げられるかすらわからないように思います。 正しくcatchするには関数の中身を追うしかない?と疑問に思っています。 C#ではこのような場合、どうするのが一般的なのでしょうか? Javaでは例外処理の強制は簡単なので、構文が似てるだけに不思議に思っています。 基本的な仕様の見落としだったら申し訳ありませんが、よろしくお願いいたします。

  • 例外処理があまり使われない理由について

    C++でのプログラミングに関して質問です。 只今勉強中で色々な方のソースを拝見していますが、 参考書や解説サイトにはよく載っている「例外処理(tryとかcatchとか)」を記述したソースを殆ど見ないのですが、 例外処理は使わない方がいいのでしょうか? (処理速度が遅くなるとか、gotoのような暗黙の使ってはいけない理由があるのですかね?) 私自身も面倒なので例外処理は今まで書いたことがないのですが、 例外処理を記述する癖をつけた方がいいでしょうか?

  • アサーションの教材

    アサーションについて 学びたいと思っています。 何か良い 学習教材 書籍 DVD ワークシートなどありませんか? また 研修会なんかの情報も欲しいです。 社会人対象のものでお願いします。 その他 何でもいいので アサーションについての情報を いただけましたらありがたいです。 宜しくお願いします。

  • VBSの例外処理について

    VBScriptの例外処理は構文エラー以外にどんなものがありますか? できる限りでいいので教えていただけないでしょうか?? また、VBScriptの例外処理が発生した時に戻り値(%ERRORLEVEL%)が0になるのは何故でしょう? ※後者は素朴な疑問なのでスルーしても結構です。もしご存知でしたら教えてください。 ざっくりとした質問ですが、ご回答宜しくお願い致します。