Visual Basic 2005 ここが便利!IDE編第10回 日常的な使い勝手を向上させる3つの小さな改良− 例外アシスタント、一時プロジェクト、Line Revisionマーク −株式会社ピーデー 川俣 晶2005/11/02 |
Page1
Page2
|
|
Visual Studio .NET 2003の無味乾燥な例外メッセージプログラムの実行中には、予期せぬ例外が発生することがある。それを見て、うれしいと思うプログラマはまずいないだろう。 しかし、例外などはない方がよいと思うのは間違いである。なぜなら、例外とはバグやシステムトラブルの原因を探るヒントを与えてくれるものだからだ。何かのトラブルを調査する際、例外情報を使えるか否かで、大きく作業の効率が左右されることがある。例外を見るのは嫌かもしれないが、それは大切に扱う価値があるのだ。 とはいえ、例外情報にいくらヒントが含まれているとしても、それを読み取るのはけっこう大変である。例えば、以下のような誤ったプログラムを実行してみよう。 |
|
|
例外を発生するサンプル・プログラム |
Visual Studio .NET 2003(以降、VS.NET)では、以下のような無味乾燥でぶっきらぼうなメッセージが表示されるだけである。
上記プログラム実行時に表示されるメッセージ(Visual Studio .NET 2003) |
VS.NETでは、このような無味乾燥でぶっきらぼうなメッセージが表示されるだけである。 |
このようなメッセージを見て、即座に修正のための行動に移れるのならよいが、初心者には何をどうしてよいのかすぐには分からないかもしれない。いや、ベテランでも見慣れない例外であったりすれば、そうなる可能性はあるだろう。システムにはさまざまな例外の種類があり、それらのすべてを把握している技術者などそうそういるものではないだろう。
このダイアログ・ボックスには[ヘルプ]ボタンが用意されているが、これは発生した例外の説明ではなく、このダイアログ・ボックス自体の説明を表示させる機能しか持っていない。
Visual Basic 2005の例外アシスタント
だが、Visual Basic 2005では、この例外の表示が大幅に改善されるのである(ここではVisual Basic 2005 Express Beta 2日本語版を使用している。以下も同じ)。
上記と同じプログラムをVisual Basic 2005で実行すると以下のように、はるかに親切なダイアログ・ボックスが表示される。[中断]や[継続]ボタンといった、メニューやツールバーの機能で容易に代用できるものは消え、その代わりにたくさんのリンクが並んでいる。
上記プログラム実行時に表示されるメッセージ(Visual Basic 2005) |
「トラブルシューティングのヒント」にはその例外を発生させる具体的な原因と対策の説明が表示される。例外の詳細をクリップボードにコピーすることもできる。 |
ここで注目すべきは、次に可能な行動の候補がいくつも並んでいることである。先に下の方のメッセージから見ていこう。
「詳細の表示」とは、例外の詳細情報を表示する機能である。「例外の詳細をクリップボードに追加」は、詳細情報をクリップボードにコピーすることを意味する。この機能は、自分の手に負えないときに、他人に詳しい障害情報を送る場合などに役立つ。つまり、クリップボードにコピーした例外情報を、電子メールなどの本文に貼り付ければよいわけである。
しかし、本当に価値があるのは、その上にある「トラブルシューティングのヒント」の方である。ここには、その例外を発生させる具体的な原因と対策の説明が並んでいる。
「クラス・ライブラリのメンバが削除された場合……」という項目は、ずっとうまく動作していたコードで急に例外が起こるようになった場合に助けとなるヒントだろう。あるプログラムから呼び出しているクラス・ライブラリを別の誰かが担当している場合、利用していたメンバの名前が変わったり、それが削除されたりすることがある。
もちろん、きちんと機能しているプロジェクトであれば、そのような変更は必ず関係者には通知されるだろうが、通知された情報を常に正しく受け止めることができるか否かは別の問題である。うっかり自分には関係ないと思って見過ごしてしまう可能性もある。しかし、このようなヒントがあれば、見落とした通知を再確認するためのヒントになるだろう。
次の「遅延バインドされたオブジェクト変数のメンバにアクセスしようとする場合……」という項目は、間違いなく存在するメンバを利用しているにもかかわらず、この例外に遭遇した場合に役立つヒントといえるだろう。
データ型を明示しないでオブジェクトを扱うと、メソッドの呼び出しなどが正しいか否かはコンパイル時にはチェックできず、それが実行時に(遅延バインドされるときまで)遅延される。もちろん、存在しないメンバを利用するコードを書いたのであれば、一目瞭然(りょうぜん)、バグであることは明らかである。ところが、存在するメンバを利用しているにもかかわらず、この例外が発生することがある。その理由が、このヒントに示されている。つまり、「パブリックに宣言」されていないメンバには外部からアクセスすることはできないのである。
このような事実は、オブジェクト指向プログラミング(OOP)に慣れ親しんだプログラマには常識レベルの知識である。しかし、OOPに親しんでいないVisual Basicプログラマも多いことから考えて、このヒントが役立つケースは多いのではないかと思う。
最後の「この例外に関する一般的なヘルプを……」は、厳密にいえばヒントではなく、ずばりその例外に関するドキュメントを表示する選択である。上の2つのヒントで問題が解決しなかった場合は、その例外の意味を正しく理解し、ソース・コードと見比べて例外の発生原因を推理しなければならない。
ちなみに、これらのヒントをクリックすると、以下のようにそれに対応する詳細なドキュメントが表示される。ただし、ベータ版では、まだ日本語のドキュメントは表示されない。この点は製品版に期待しよう。
「トラブルシューティングのヒント」をクリックして表示されるヘルプ |
発生している例外に対応したヘルプ・ドキュメントが表示される。 |
「トラブルシューティングのヒント」の項目はすべての例外について用意されているわけではないが、そうでないとしても、この例外アシスタントの表現力は明らかにVS.NETと比較して優れている。
INDEX | ||
Visual Basic 2005 ここが便利! | ||
第10回 日常的な使い勝手を向上させる3つの小さな改良 | ||
1.Visual Basic 2005の例外アシスタント | ||
2.一時プロジェクト/Line Revisionマーク | ||
「Visual Basic 2005 ここが便利!」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -