none
アプリケーションの共通処理について RRS feed

  • 質問

  • 村木と申します。はじめまして。

    VB2005 ProffesionalでWindowsアリケーションを作成しています。

    アプリケーションを作るにあたり、以下の処理を実装したいと考えています。

    1.アプリケーションの開始・終了ログ

    2.例外発生時の処理

     →具体的には、エラーログ出力・メッセージボックス出力・プログラム終了

    以前のVBではsub Mainに上記処理を記述していましたが、今回はVB2005なので

    sub Main以外の方法で作成したいと思って、いろいろ調べてみました。

    その結果、ApplicationEventのStartupイベントなどに記述すればできるようですが

    この方法だとロジックが冗長するように思います。

    プログラムが数十本あるので、同じロジックは冗長させたくないのです。

    どのようにロジックを構成すればよいか教えていただけませんでしょうか?

    よろしくお願いします。

     

     

    2006年12月8日 13:54

回答

  • ほとんど納得できました。

    ただ、アスペクト指向とはちょっと違って、コードを隠蔽したいというつもりでした。
    でも1行だけであれば、変に頑張るより、ハンドラを紐付けしたほうが楽です。

    ApplicationEvent自体を継承するとは、イメージを伝えたかったのですが
    かえって分かりにくくなってしまったようなので、無視して下さい。

    教えていただいた内容で開発を進めていこうと思います。
    どうもありがとうございましたm(__)m

    2006年12月13日 12:47

すべての返信

  • muraki さん、こんにちは。

     muraki さんからの引用
    その結果、ApplicationEventのStartupイベントなどに記述すればできるようですがこの方法だとロジックが冗長するように思います。
    プログラムが数十本あるので、同じロジックは冗長させたくないのです。

    でしたら、別にそこにロジックを書かなければ良いのでは?
    たとえば、実行させたい場所には呼び出し 1 行だけ書いて、ロジックはクラス ライブラリに書けば良いです。

    ロギングを利用するのも手です。

    2006年12月8日 14:19
  •  muraki さんからの引用

    2.例外発生時の処理

     →具体的には、エラーログ出力・メッセージボックス出力・プログラム終了

    こちらについては Application.ThreadException イベント を利用すると処理を一箇所にまとめられます。
    プログラム終了などは自分のアプリケーションでやった方が気持ち悪くないです。

    参考となるサイト:
    適切に処理されなかった例外をキャッチするには?

    2006年12月9日 6:57
  • 回答ありがとうございます。

    おっしゃる通りなのですが、これですとプログラマーが呼び出し行を記述することを

    忘れたりする心配がないでしょうか?

    可能であれば、その1行さえも意識させたくないのです。

    例えばApplicationEvent自体を継承することは無茶な考えなのでしょうか?

    2006年12月11日 14:45
  • 回答ありがとうございます。

    Application.ThreadExceptionイベントを各プログラム内で記述するということでしょうか?

    >プログラム終了などは自分のアプリケーションでやった方が気持ち悪くないです。

    予期しないエラーの場合は共通処理で強制終了したいです。

    2006年12月11日 14:48
  • muraki さん、こんにちは。

     muraki さんからの引用
    おっしゃる通りなのですが、これですとプログラマーが呼び出し行を記述することを忘れたりする心配がないでしょうか?

    エントリ ポイントで Application.ThreadException のハンドラを紐付けするだけですよね。
    (インターフェイスの "実装" が漏れる可能性はないのでしょうか? と言われた時のことを思い出しました)

    可能であれば、その1行さえも意識させたくないのです。

    アスペクト指向にしたいということだと認識しました。
    しかし、その仕組みを考える頭が私にはありませんです。

    例えばApplicationEvent自体を継承することは無茶な考えなのでしょうか?

    イベントを継承?
    ごめんなさい、ちょっと意味がわかりませんでした。

    2006年12月12日 7:33
  • ほとんど納得できました。

    ただ、アスペクト指向とはちょっと違って、コードを隠蔽したいというつもりでした。
    でも1行だけであれば、変に頑張るより、ハンドラを紐付けしたほうが楽です。

    ApplicationEvent自体を継承するとは、イメージを伝えたかったのですが
    かえって分かりにくくなってしまったようなので、無視して下さい。

    教えていただいた内容で開発を進めていこうと思います。
    どうもありがとうございましたm(__)m

    2006年12月13日 12:47