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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

C#
繁星點(diǎn)點(diǎn)滴滴 2021-09-19 15:41:34
我正在開發(fā)一個(gè) .net 控制臺(tái)應(yīng)用程序,我有以下代碼:-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塊內(nèi)引發(fā)異常,其他 2 個(gè)catch塊將捕獲它,具體取決于異常類型??!。但如果在catch (System.IO.DirectoryNotFoundException e)塊內(nèi)引發(fā)異常,則控制臺(tái)將結(jié)束?,F(xiàn)在我想如果在catch (System.IO.DirectoryNotFoundException e)塊內(nèi)引發(fā)異常,那么catch將到達(dá)最后一個(gè)塊,但似乎情況并非如此..所以有人可以建議我如何捕獲在異常塊內(nèi)引發(fā)的異常嗎?
查看完整描述

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.

    }

}


查看完整回答
反對(duì) 回復(fù) 2021-09-19
?
MM們

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊

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


查看完整回答
反對(duì) 回復(fù) 2021-09-19
?
慕蓋茨4494581

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ù)、損壞的流等不同)。



查看完整回答
反對(duì) 回復(fù) 2021-09-19
  • 3 回答
  • 0 關(guān)注
  • 167 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)