第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何捕獲異常塊內引發(fā)的異常

我如何捕獲異常塊內引發(fā)的異常

C#
繁星點點滴滴 2021-09-19 15:41:34
我正在開發(fā)一個 .net 控制臺應用程序,我有以下代碼:-try {    SPFile destFile = projectid.RootFolder.Files.Add(destUrl, fileBytes, false);} catch (System.IO.DirectoryNotFoundException e) {    SPFile destFile = projectid.RootFolder.Files.Add(destUrl, fileBytes, false);} catch {}現(xiàn)在,如果在try塊內引發(fā)異常,其他 2 個catch塊將捕獲它,具體取決于異常類型!!。但如果在catch (System.IO.DirectoryNotFoundException e)塊內引發(fā)異常,則控制臺將結束?,F(xiàn)在我想如果在catch (System.IO.DirectoryNotFoundException e)塊內引發(fā)異常,那么catch將到達最后一個塊,但似乎情況并非如此..所以有人可以建議我如何捕獲在異常塊內引發(fā)的異常嗎?
查看完整描述

3 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

你應該注意到try-catch 永遠不應該成為你代碼邏輯的一部分,這意味著你永遠不應該使用 try-catch 來控制你的分支。這就是為什么您會發(fā)現(xiàn)很難讓異常流過每個 catch 塊的原因。


如果你想抓住第二個塊,你可以這樣寫(但不推薦):


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

{

}

你最好不要像上面那樣寫。相反,建議像這樣檢測前面存在的文件夾:


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.

    }

}


查看完整回答
反對 回復 2021-09-19
?
MM們

TA貢獻1886條經驗 獲得超2個贊

要處理此問題,您必須try .. catch在正在處理的 catch 塊內編寫另一個塊DirectoryNotFoundException


查看完整回答
反對 回復 2021-09-19
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

使用File.Exists查看路徑是否已經存在可能更有意義,然后嘗試寫入文件:


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ā)生的唯一例外是寫入文件失敗,您需要按照應用程序的要求進行處理(權限問題的處理方式應與無效的二進制數(shù)據(jù)、損壞的流等不同)。



查看完整回答
反對 回復 2021-09-19
  • 3 回答
  • 0 關注
  • 174 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號