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

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

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

Re[4]: エラーから処理を戻すには?


(過去ログ 66 を表示中)

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

■38386 / inTopicNo.1)  エラーから処理を戻すには?
  
□投稿者/ ノビー (1回)-(2009/07/13(Mon) 13:07:03)

分類:[C#] 

あるループ処理でエラーが発生した場合、try 〜 catch でエラー処理をしていて、
キャッチされたExceptionによっては元の処理を続けて実行したいのですが可能でしょうか?
Exceptionによる判定はできるのですが、処理を戻す方法がわかりません。

引用返信 編集キー/
■38388 / inTopicNo.2)  Re[1]: エラーから処理を戻すには?
□投稿者/ επιστημη (2057回)-(2009/07/13(Mon) 13:32:40)
επιστημη さんの Web サイト
> あるループ処理でエラーが発生した場合、try 〜 catch でエラー処理をしていて、
> キャッチされたExceptionによっては元の処理を続けて実行したいのですが可能でしょうか?

↓こんなんでえぇのかしら。

bool again;
do {
  again = false;
  try {
    なんかする
  } catch ( Exception ex ) {
    if ( 事と次第によっては ) again = true;
  }
} while ( again );

引用返信 編集キー/
■38389 / inTopicNo.3)  Re[1]: エラーから処理を戻すには?
□投稿者/ .SHO (964回)-(2009/07/13(Mon) 13:32:47)
なぜ、そうしたいのかわかりませんが
そのように作り込めばいいのでは?
引用返信 編集キー/
■38390 / inTopicNo.4)  Re[2]: エラーから処理を戻すには?
□投稿者/ .SHO (965回)-(2009/07/13(Mon) 13:37:47)
2009/07/13(Mon) 13:41:40 編集(投稿者)
No38388 (επιστημη さん) に返信

> ↓こんなんでえぇのかしら。
> 
> bool again;
> do {
>   again = false;
>   try {
>     なんかする
>   } catch ( Exception ex ) {
>     if ( 事と次第によっては ) again = true;
>   }
> } while ( again );

try {
    なんかする1
    なんかする2
    なんかする3
} catch ...

の「なんかする2」で例外が発生したら
「なんかする3」から再開したいんじゃないかな?

って、そういうふうに作りこめばいいんですけどね^^;

引用返信 編集キー/
■38391 / inTopicNo.5)  Re[1]: エラーから処理を戻すには?
□投稿者/ みきぬ (529回)-(2009/07/13(Mon) 13:43:43)
No38386 (ノビー さん) に返信
> あるループ処理でエラーが発生した場合、try 〜 catch でエラー処理をしていて、
> キャッチされたExceptionによっては元の処理を続けて実行したいのですが可能でしょうか?
> Exceptionによる判定はできるのですが、処理を戻す方法がわかりません。
>
今はどう書いてるんでしょ?
(例えば、try 〜 catch がループの外にあるのか、中にあるのかが知りたい)
引用返信 編集キー/
■38392 / inTopicNo.6)  Re[3]: エラーから処理を戻すには?
□投稿者/ επιστημη (2058回)-(2009/07/13(Mon) 14:00:41)
επιστημη さんの Web サイト
> try {
>     なんかする1
>     なんかする2
>     なんかする3
> } catch ...
> 
> の「なんかする2」で例外が発生したら
> 「なんかする3」から再開したいんじゃないかな?

int なんかしたさ加減 = 1;
do {
  try {
    switch ( なんかしたさ加減 ) {
    case 1: なんかする1; goto case 2;
    case 2: なんかする2; goto case 3;
    case 3: なんかする3; goto default;
    default:
    }
    なんかしたさ加減 = 0;
  } catch ( Exception ex ) {
    if ( 事と次第によっては ) {
      なんかしたさ加減 = n番目以降;
    }
  }
} while ( なんかしたさ加減 != 0 );

なんちて。

引用返信 編集キー/
■38393 / inTopicNo.7)  Re[4]: エラーから処理を戻すには?
□投稿者/ .SHO (966回)-(2009/07/13(Mon) 14:10:53)
2009/07/13(Mon) 14:11:31 編集(投稿者)
# 図形モードにするの忘れた、、、

> int なんかしたさ加減 = 1;
> do {
>   try {
>     switch ( なんかしたさ加減 ) {
>     case 1: なんかする1; goto case 2;
>     case 2: なんかする2; goto case 3;
>     case 3: なんかする3; goto default;
>     default:
>     }
>     なんかしたさ加減 = 0;
>   } catch ( Exception ex ) {
>     if ( 事と次第によっては ) {
>       なんかしたさ加減 = n番目以降;
>     }
>   }
> } while ( なんかしたさ加減 != 0 );

これをうまいこと変形すれば、ループが中にあっても問題なしですね!

引用返信 編集キー/
■38394 / inTopicNo.8)  Re[2]: エラーから処理を戻すには?
□投稿者/ みきぬ (530回)-(2009/07/13(Mon) 14:32:06)
[壁]*'-')oO(VB でいうところの ON ERROR RESUME NEXT がやりたいのかな?)
引用返信 編集キー/
■38396 / inTopicNo.9)  Re[3]: エラーから処理を戻すには?
□投稿者/ ぱぱいやん (54回)-(2009/07/13(Mon) 14:43:25)
ぱぱいやん さんの Web サイト
No38394 (みきぬ さん) に返信
> [壁]*'-')oO(VB でいうところの ON ERROR RESUME NEXT がやりたいのかな?)

僕もそんな気がします。

しかし、何か問題が発生するから例外エラーなのであって、そのエラーを無視した時どうなるのかは throw した処理を書いた人にしかわからないので、完全に処理を続行されるのは無理なんじゃないかなぁ・・・
続きを・・・という処理を、自分で制御できれば何とでもなるでしょうけど。
引用返信 編集キー/
■38398 / inTopicNo.10)  Re[4]: エラーから処理を戻すには?
□投稿者/ επιστημη (2059回)-(2009/07/13(Mon) 15:37:00)
επιστημη さんの Web サイト
2009/07/13(Mon) 15:39:38 編集(投稿者)

> 完全に処理を続行されるのは無理なんじゃないかなぁ・・・

case-by-caseでしょうね。
たとえば接続確立の"時間切れ"が理由で例外吐いたんなら、
catch側では「数秒待って(3回を限度に)もっぺん接続」とか、
あるいは"断線"が理由なら違うポートで再送とか、
"エラー頻発"ならスピード落とすとか。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -