- - PR -
【ASP.NET】クラス内で発生したエラーの捕らえ方
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-30 11:37
えんぞ@?さん、じゃんぬさん、お返事ありがとうございます。
すいません。今回初めてクラスにチャレンジしていますので、よく分かっておりません。 Overloads も Shared も参考にしたものそのままで・・・ (さすがに、Public と Private の使い方は分かりますけど(^_^;)) DBAccess クラスには、他にもテーブル名を受け取ってデータセットを返すメソッド等が定義してあります。クラス内で変数は定義していません。あくまで、メソッドのみ記述しています。 呼び元では、DBAccess.メソッド名(パラメータ) という形で利用しています。 Shared のヘルプを見ますと、 Shared 省略できます。この Function プロシージャが共有プロシージャであることを示します。クラスや構造体の特定のインスタンスには関連付けられていません。共有プロシージャを呼び出すには、クラスや構造体の名前、またはクラスや構造体の特定のインスタンスの変数名を使用して、共有プロシージャを修飾します。 とありますが、何のことやらサッパリで・・・ ちなみに、Shared を取ると、「非共有メンバを参照するには、オブジェクト参照が必要です」というエラーになります。 今回のような場合、Shared は指定しちゃダメなんでしょうか? Shared を指定しない場合、呼び元でクラス定義し、インスタンス化して利用するのでしょうか? 初歩的な質問で申し訳ありませんが、もう少しお付き合いいただければ幸いです。 よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2006-03-30 11:50
とりあえず、インスタンス化しなくても呼び出せるメソッドだと思ってください。 クラス名.メソッド名() で呼び出せるメソッドです。 最初は、あまり難しく考えない方が良いでしょう。
ダメじゃないです、結構ですよ。
はい、Shared メンバでなければそうするほかありません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-03-30 12:00
じゃんぬさん、分かりやすいご説明ありがとうございました。 既に、じゃんぬさんはヒントをくれていましたね(^_^;) 「共有メンバ」と「インスタンスメンバ」というヒントを。 調べてみました。 共有メンバは、クラス自体のメンバであり、クラスのインスタンスを必要とせず、メンバを修飾するには、クラスのインスタンスではなく、クラスの名前を使う。 インスタンスメンバは、特定のインスタンスのメンバであり、インスタンス名で修飾する必要がある。 <VS.NET の String クラスの説明より抜粋・編集> 理解できました。ありがとうございます。 | ||||||||||||
|
投稿日時: 2006-03-30 13:42
おぉ、やはり勉強不足!(^^;
なるほど、別領域に展開されるのですね。 「この Function プロシージャが共有プロシージャであることを示します。」となっているので、てっきり「共有」という文字から察するに同一領域に展開されるものと勘違いしておりました。 # たまに Overloads と Overrides を混同しちゃうレベルですのでw | ||||||||||||
|
投稿日時: 2006-03-30 14:21
例外を使った事なかったのに、エラー制御の指針を出して下さいと言われ、誰もやらないので、しょうがなくやった事があります。
対象データ無しも全て例外! とにかく、ハンドリングが大変でした。 ここのSelectはいいけど、ここは駄目って感じで組み込むと、Try〜Catchの嵐 しかも、パフォーマンス悪いと言ったオマケ付。 よい反面教師となりました。 | ||||||||||||
|
投稿日時: 2006-03-30 14:44
なんちゅー業務じゃw 誰も説得しないことも信じられんw #確か『うろ覚え』の人だね。 #この前別の投稿みたら直っていたからビックリしたよw | ||||||||||||
|
投稿日時: 2006-03-30 15:01
どうも、うろ覚えの買太郎です
いや〜、エンドユーザーは、ここの読込でデータ無かったらどうなるの? ほぼありえない例外も、システムで共通でこうします!って指針で処理するのじゃなくて、 ここは、こうね。ここは、こうね。。。ああ、全部詳細設計に書いてよ。。。 さらに、開発とエンドユーザーの間にいてる、某SIerの技術の方が、もう細かくて まず指針出してね! はい、んじゃサンプル見せてね! これは、駄目というが、じゃあどうするのか教えれ!あんたわかってんだろ! はじめから、こうしてほすぃ要望あったらそれ言っとけ感じでした。 そこに、買太郎は、.Net経験 1ヶ月&ThrowもCatchも未経験だったが、色々調べてこうしますって無理に進めたんですよ〜 じゃないと、すでに燃えてるプロジェクトが進まないから。。。 ネットも使えなくて、本とMSDNで見よう見まねで、いっぱいApplicationException派生クラスも作りました。 でも、エンドユーザーからの評判は、非常に良かったですよ。 大勢で慌てて、コーディングしたのにリリース後のバグも、ほぼなかったらしいし。 パフォーマンス悪いと言っても、基本的にありえない処理だったみたいです。 今から、大幅カスタマイズするから来てっと言われると間違いなく。。。。させていただきます | ||||||||||||
|
投稿日時: 2006-03-30 15:49
すみません、説明が下手なもので... どこかに誘導した方が良かったかもしれません。
これをやるのであれば、ローカル変数に Static を修飾します。 実際にはこれはローカル変数じゃなくなるでしょうね。 いつか消える言語仕様かもしれませんね。 C/Java では Shared という意味での static なので紛らわしいです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |