3 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
你應(yīng)該注意到try-catch 永遠(yuǎn)不應(yīng)該成為你代碼邏輯的一部分,這意味著你永遠(yuǎn)不應(yīng)該使用 try-catch 來控制你的分支。這就是為什么您會(huì)發(fā)現(xiàn)很難讓異常流過每個(gè) catch 塊的原因。
如果你想抓住第二個(gè)塊,你可以這樣寫(但不推薦):
try
{
SPFile destFile = projectid.RootFolder.Files.Add(destUrl, fileBytes, false);
}
catch (System.IO.DirectoryNotFoundException e)
{
try
{
SPFile destFile = projectid.RootFolder.Files.Add(destUrl2, fileBytes, false);
}
catch
{
// Do what you want to do.
}
}
catch
{
}
你最好不要像上面那樣寫。相反,建議像這樣檢測(cè)前面存在的文件夾:
try
{
YourMainMethod();
}
catch (Exception ex)
{
// Handle common exceptions that you don't know when you write these codes.
}
void YourMainMethod()
{
var directory = Path.GetDirectoryName(destUrl);
var directory2 = Path.GetDirectoryName(destUrl2);
if (Directory.Exists(directory))
{
SPFile destFile = projectid.RootFolder.Files.Add(destUrl, fileBytes, false);
}
else if (Directory.Exists(directory2))
{
SPFile destFile = projectid.RootFolder.Files.Add(destUrl2, fileBytes, false);
}
else
{
// Handle the expected situations.
}
}

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
要處理此問題,您必須try .. catch
在正在處理的 catch 塊內(nèi)編寫另一個(gè)塊DirectoryNotFoundException

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
使用File.Exists查看路徑是否已經(jīng)存在可能更有意義,然后嘗試寫入文件:
string path = null;
if(!File.Exists(destUrl))
{
path = destUrl;
}
else
{
if(!File.Exists(destUrl2))
{
path = destUrl2;
}
}
if(!string.IsNullOrWhiteSpace(path))
{
try
{
SPFile destFile = projectid.RootFolder.Files.Add(path, fileBytes, false);
}
catch
{
// Something prevented file from being written -> handle this as your workflow dictates
}
}
然后,您希望發(fā)生的唯一例外是寫入文件失敗,您需要按照應(yīng)用程序的要求進(jìn)行處理(權(quán)限問題的處理方式應(yīng)與無效的二進(jìn)制數(shù)據(jù)、損壞的流等不同)。
- 3 回答
- 0 關(guān)注
- 167 瀏覽
添加回答
舉報(bào)