C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 例外処理について


(過去ログ 13 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■3768 / inTopicNo.1)  例外処理について
  
□投稿者/  ^ ^; (1回)-(2007/05/23(Wed) 01:50:07)

分類:[.NET 全般] 

プログラミングをはじめたばかりの初心者です。
例外処理の仕掛け方について教えてください。

以下に例を記載します。

クラス内の処理を制御するメソッド SyoriA は、
業務処理である、 CheckB メソッドと、CheckC メソッドを呼び出すものとします。
制御メソッドである、SyoriAには当然のごとく try … catch を記述すると思いますが、
呼び出し先のメソッドには、CheckB のように例外処理を仕掛けなくても SyoriAの制御
メソッドで例外をキャッチすることができますが、 CheckC のように例外処理を記述して
上位のメソッドに引き継いでも同様に SyoriAで例外をキャッチすることができると
思います。
一般的に、例外処理 try … catch は、すべてのメソッドに記述するほうがよいのでしょうか?


例)
private void SyoriA(){
try {
this.CheckB();
this.CheckC();
その他の処理・・・
} catch( xxxxxException ex){
例外処理A
} catch( xxxxxException ex){
例外処理B
} finally {
if (xxx != null){
xxx.Close();
xxx.Dispose();
}
}
}

// CheckB
private void CheckB(){
処理・・・・・
}

// CheckC
private void CheckC){
try {
処理・・・・
} catch (Exception){
throw;
}
}

引用返信 編集キー/
■3769 / inTopicNo.2)  Re[1]: 例外処理について
□投稿者/ επιστημη (525回)-(2007/05/23(Wed) 06:20:22)
επιστημη さんの Web サイト
> CheckC のように例外処理を記述して上位のメソッドに引き継いでも同様に 
> SyoriAで例外をキャッチすることができると思います。

なんにもしなければ自動的に上位に引き継がれますけど。

> 一般的に、例外処理 try … catch は、すべてのメソッドに記述するほうがよいのでしょうか?

そのメソッド内で処理したい例外があれば、でいいんじゃないかしら?


引用返信 編集キー/
■3770 / inTopicNo.3)  Re[2]: 例外処理について
□投稿者/ 囚人 (101回)-(2007/05/23(Wed) 08:26:00)
>制御メソッドである、SyoriAには当然のごとく try … catch を記述すると思いますが、

>一般的に、例外処理 try … catch は、すべてのメソッドに記述するほうがよいのでしょうか?

場合にもよりますが、一般的に「当然のごとく」は例外処理しないと思いますよ。
.NET では、一般的に例外は「放置」です。

「例外処理A」「例外処理B」などはどんな処理をしているのでしょうか?
引用返信 編集キー/
■3800 / inTopicNo.4)  Re[3]: 例外処理について
□投稿者/ Jitta (334回)-(2007/05/23(Wed) 22:30:55)
Jitta さんの Web サイト
No3770 (囚人 さん) に返信
> 場合にもよりますが、一般的に「当然のごとく」は例外処理しないと思いますよ。

try と入力したら catch が自動で入力されるので、「当然のごとく」なんじゃないかなぁ?

これ、try ... finally にするように要望送ろうか?

引用返信 編集キー/
■3803 / inTopicNo.5)  Re[1]: 例外処理について
□投稿者/ επιστημη (528回)-(2007/05/23(Wed) 23:29:17)
επιστημη さんの Web サイト
> 制御メソッドである、SyoriAには当然のごとく try … catch を記述すると思いますが、

例外に対してSyoriAが対処できないなら"当然のごとく"try-catchしませんよ。
catchしたところでなにもできないんだから。

引用返信 編集キー/
■3804 / inTopicNo.6)  Re[2]: 例外処理について
□投稿者/  ^ ^; (2回)-(2007/05/23(Wed) 23:43:53)
2007/05/23(Wed) 23:45:25 編集(投稿者)
2007/05/23(Wed) 23:45:21 編集(投稿者)

皆さんへ

いろいろと教えていただきありがとうございました。
例に記載した処理は、例として空想で書いてみました。

ただ、いまだに、try … catch の仕掛け方についてあいまいな
部分があるのです。

現在、色々なプログラマが作成したC#のロジック(Windowsアプリ)
を見ながら、C#の勉強をしています。
特に例外処理は、同じような機能でも作る人によってつけていたり
つけていなかったりしていたため、質問してみました。

中には、すべてのメソッドに try … catch をつけているプログラム
もあり困惑しています。

解決済み
引用返信 編集キー/
■3808 / inTopicNo.7)  Re[3]: 例外処理について
□投稿者/ Jitta (337回)-(2007/05/24(Thu) 07:54:43)
No3804 ( ^ ^; さん) に返信
> 2007/05/23(Wed) 23:45:25 編集(投稿者)
> 2007/05/23(Wed) 23:45:21 編集(投稿者)
>
> 皆さんへ
>
> いろいろと教えていただきありがとうございました。
> 例に記載した処理は、例として空想で書いてみました。
>
> ただ、いまだに、try … catch の仕掛け方についてあいまいな
> 部分があるのです。
>
> 現在、色々なプログラマが作成したC#のロジック(Windowsアプリ)
> を見ながら、C#の勉強をしています。
> 特に例外処理は、同じような機能でも作る人によってつけていたり
> つけていなかったりしていたため、質問してみました。
>
> 中には、すべてのメソッドに try … catch をつけているプログラム
> もあり困惑しています。
>

解決済みでいいの?

先に少し書きましたが、自動的に try - catch が入力されるからといって、必ずそうしなければならない訳ではありません。むしろ catch は不要で、finally こそ必要です。
これを書くかどうかは、その処理の中身に依存します。
dispose が必要なオブジェクトを使っているなら、try - finally が必要です(using は try - finally に展開されるので、同一視する)。
その他、どっぷり浸かれる(疲れる も可)
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -