2016-05-06 9 views
6

これは正しい用語がわかっていないため、実際には難しいです。それは飛び越えて、次のことを試しました。私が試しに&を試してみる必要があるかどうかわかりませんが、ここではそれが行きます。エラーが発生した場合、コードをスキップするにはどうすればいいですか?C#.NET

あなたは、私はボタンを押すだけで、私の一時フォルダからのものを削除しようとしていますし、それがパス「ファイル名」に

アクセスがあると言って私に私のPC上でエラーがスローされます見ることができるように否定された

enter image description here

ファイルが使用中である場合、私は、それを見落とすと、次のファイルにジャンプし、1またはより良いだけのファイルを削除するには、コードアクセス権を与えることをしようとするコードがないたいと思いますコース。

これは可能ですか?あなたは例外をキャッチし、ループ

を終了するかどうかにdescisionを確認する必要があり

private void label6_Click(object sender, EventArgs e) 
{ 
    string tempPath = Path.GetTempPath(); 
    DirectoryInfo di = new DirectoryInfo(tempPath); 

    foreach (FileInfo file in di.GetFiles()) 
    { 
     file.Delete(); 
    } 
} 
+0

はい、可能です。そしてあなたは正しい道を歩んでいると私は思う。 –

答えて

0

まず、あなたはエラーを発生させることができるものをチェックする条件を追加する必要があります。コード内で制御できないその他の条件がある場合は、try-catchステートメントを追加します。

6
foreach (FileInfo file in di.GetFiles()) 
{ 
    try 
    { 
     file.Delete(); 
    } 
    catch(Exception e) 
    { 
     // Log error. 
    } 
} 
+4

'catch(Exception e)' - そのようなコードを絶対に再入力しないでください(すべてのエラーをキャッチします)、 'catch(IOException e)' –

+2

重大な実行中のケースでは大丈夫です。盲目的にそれを却下することは、それほど悪いことではありません。 – mariocatch

+0

私はそのコードではうまくいますが、catch(Exception e)からeを削除しましたが、エラーをログに記録すると言いました。 –

0

「例外処理」または「エラー処理」という非常に一般的なプログラミング機能が必要です。この機能を使用すると、例外がスローされた場合の処理​​方法をコードに伝えることができます。 C#(およびほとんどの言語)では、try-catchブロックを使用します。それは最も基本的だとき、それは次のようになります。file.Delete()が例外をスローした場合

try 
{ 
    file.Delete(); 
} 
catch(Exception e) 
{ 
    //log error or display to user 
} 

//execution continues 

、例外はcatchブロックに「キャッチ」され、そしてあなたは、例外を調べて、上の続行する前に、それに応じて行動を取ることができます。

一部のリソース:

+0

どうすればエラーになるのですか?次のディレクトリのintディレクトリに移動しますか? –

+0

@ Alexander.Mattあなたはtry/catchを何らかのループで包むでしょう – Jonesopolis

+0

推奨するループはありますか? –

3

だけ必要例外をキャッチ(とあなたのケースでそれらを無視) :

private void label6_Click(object sender, EventArgs e) 
{ 
    string tempPath = Path.GetTempPath(); 
    DirectoryInfo di = new DirectoryInfo(tempPath); 

    foreach (FileInfo file in di.GetFiles()) 
    { 
     try 
     { 
      file.Delete(); 
     } 
     catch (IOException) 
     { 
      // ignore all IOExceptions: 
      // file is used (e.g. opened by some other process) 
     } 
     catch (SecurityException) { 
      // ignore all SecurityException: 
      // no permission 
     } 
     catch (UnauthorizedAccessException) 
     { 
      // ignore all UnauthorizedAccessException: 
      // path is directory 
      // path is read-only file 
     } 
    } 
} 
関連する問題