- PR -

【ASP.NET】クラス内で発生したエラーの捕らえ方

投稿者投稿内容
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-30 11:37
えんぞ@?さん、じゃんぬさん、お返事ありがとうございます。
引用:

えんぞ@?さんの書き込み (2006-03-30 10:15) より:

メソッドを Shared にしているのが何気に気になる。
# 気にし過ぎかな...


引用:

例にある DBAccess クラスには資源となりえるデータが何もないですし、
メソッド内で解決しているので、インスタンス メンバである必要はないですね。

ただの抜粋かもしれませんけど。(そこまでは読めません...)


すいません。今回初めてクラスにチャレンジしていますので、よく分かっておりません。
Overloads も Shared も参考にしたものそのままで・・・
(さすがに、Public と Private の使い方は分かりますけど(^_^;))

DBAccess クラスには、他にもテーブル名を受け取ってデータセットを返すメソッド等が定義してあります。クラス内で変数は定義していません。あくまで、メソッドのみ記述しています。
呼び元では、DBAccess.メソッド名(パラメータ) という形で利用しています。

Shared のヘルプを見ますと、

Shared
省略できます。この Function プロシージャが共有プロシージャであることを示します。クラスや構造体の特定のインスタンスには関連付けられていません。共有プロシージャを呼び出すには、クラスや構造体の名前、またはクラスや構造体の特定のインスタンスの変数名を使用して、共有プロシージャを修飾します。

とありますが、何のことやらサッパリで・・・
ちなみに、Shared を取ると、「非共有メンバを参照するには、オブジェクト参照が必要です」というエラーになります。

今回のような場合、Shared は指定しちゃダメなんでしょうか?
Shared を指定しない場合、呼び元でクラス定義し、インスタンス化して利用するのでしょうか?

初歩的な質問で申し訳ありませんが、もう少しお付き合いいただければ幸いです。
よろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-30 11:50
引用:

ひろれいさんの書き込み (2006-03-30 11:37) より:

とありますが、何のことやらサッパリで・・・


とりあえず、インスタンス化しなくても呼び出せるメソッドだと思ってください。
クラス名.メソッド名() で呼び出せるメソッドです。
最初は、あまり難しく考えない方が良いでしょう。

引用:

今回のような場合、Shared は指定しちゃダメなんでしょうか?


ダメじゃないです、結構ですよ。

引用:

Shared を指定しない場合、呼び元でクラス定義し、インスタンス化して利用するのでしょうか?


はい、Shared メンバでなければそうするほかありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-30 12:00
引用:

じゃんぬねっとさんの書き込み (2006-03-30 11:50) より:

とりあえず、インスタンス化しなくても呼び出せるメソッドだと思ってください。
クラス名.メソッド名() で呼び出せるメソッドです。
最初は、あまり難しく考えない方が良いでしょう。

引用:

今回のような場合、Shared は指定しちゃダメなんでしょうか?


ダメじゃないです、結構ですよ。

引用:

Shared を指定しない場合、呼び元でクラス定義し、インスタンス化して利用するのでしょうか?


はい、Shared メンバでなければそうするほかありません。


じゃんぬさん、分かりやすいご説明ありがとうございました。
既に、じゃんぬさんはヒントをくれていましたね(^_^;)
「共有メンバ」と「インスタンスメンバ」というヒントを。

調べてみました。
共有メンバは、クラス自体のメンバであり、クラスのインスタンスを必要とせず、メンバを修飾するには、クラスのインスタンスではなく、クラスの名前を使う。
インスタンスメンバは、特定のインスタンスのメンバであり、インスタンス名で修飾する必要がある。
<VS.NET の String クラスの説明より抜粋・編集>

理解できました。ありがとうございます。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2006-03-30 13:42
おぉ、やはり勉強不足!(^^;
引用:

じゃんぬねっとさんの書き込み (2006-03-30 11:30) より:

メソッドがインスタンス メンバであろうと共有メンバであろうと、
もとから別領域に展開されるものですから関係ないと思います。


なるほど、別領域に展開されるのですね。
「この Function プロシージャが共有プロシージャであることを示します。」となっているので、てっきり「共有」という文字から察するに同一領域に展開されるものと勘違いしておりました。

# たまに Overloads と Overrides を混同しちゃうレベルですのでw
買太郎
会議室デビュー日: 2006/03/27
投稿数: 10
お住まい・勤務地: 大阪府
投稿日時: 2006-03-30 14:21
例外を使った事なかったのに、エラー制御の指針を出して下さいと言われ、誰もやらないので、しょうがなくやった事があります。
対象データ無しも全て例外!

とにかく、ハンドリングが大変でした。
ここのSelectはいいけど、ここは駄目って感じで組み込むと、Try〜Catchの嵐
しかも、パフォーマンス悪いと言ったオマケ付。
よい反面教師となりました。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-03-30 14:44
引用:

買太郎さんの書き込み (2006-03-30 14:21) より:
ここのSelectはいいけど、ここは駄目って感じで組み込むと、Try〜Catchの嵐
しかも、パフォーマンス悪いと言ったオマケ付。
よい反面教師となりました。


なんちゅー業務じゃw 誰も説得しないことも信じられんw

#確か『うろ覚え』の人だね。
#この前別の投稿みたら直っていたからビックリしたよw
買太郎
会議室デビュー日: 2006/03/27
投稿数: 10
お住まい・勤務地: 大阪府
投稿日時: 2006-03-30 15:01
どうも、うろ覚えの買太郎です

いや〜、エンドユーザーは、ここの読込でデータ無かったらどうなるの?
ほぼありえない例外も、システムで共通でこうします!って指針で処理するのじゃなくて、
ここは、こうね。ここは、こうね。。。ああ、全部詳細設計に書いてよ。。。

さらに、開発とエンドユーザーの間にいてる、某SIerの技術の方が、もう細かくて
まず指針出してね!
はい、んじゃサンプル見せてね!
これは、駄目というが、じゃあどうするのか教えれ!あんたわかってんだろ!
はじめから、こうしてほすぃ要望あったらそれ言っとけ感じでした。

そこに、買太郎は、.Net経験 1ヶ月&ThrowもCatchも未経験だったが、色々調べてこうしますって無理に進めたんですよ〜
じゃないと、すでに燃えてるプロジェクトが進まないから。。。
ネットも使えなくて、本とMSDNで見よう見まねで、いっぱいApplicationException派生クラスも作りました。

でも、エンドユーザーからの評判は、非常に良かったですよ。
大勢で慌てて、コーディングしたのにリリース後のバグも、ほぼなかったらしいし。
パフォーマンス悪いと言っても、基本的にありえない処理だったみたいです。
今から、大幅カスタマイズするから来てっと言われると間違いなく。。。。させていただきます
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-30 15:49
引用:

ひろれいさんの書き込み (2006-03-30 12:00) より:

じゃんぬさん、分かりやすいご説明ありがとうございました。
既に、じゃんぬさんはヒントをくれていましたね(^_^;)
「共有メンバ」と「インスタンスメンバ」というヒントを。


すみません、説明が下手なもので...
どこかに誘導した方が良かったかもしれません。

引用:

えんぞ@?さんの書き込み (2006-03-30 13:42) より:

「この Function プロシージャが共有プロシージャであることを示します。」となっているので、
てっきり「共有」という文字から察するに同一領域に展開されるものと勘違いしておりました。


これをやるのであれば、ローカル変数に Static を修飾します。
実際にはこれはローカル変数じゃなくなるでしょうね。

いつか消える言語仕様かもしれませんね。
C/Java では Shared という意味での static なので紛らわしいです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)