<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 如何:捕捉非 CLS 異常 包括 C++/CLI 在內的某些 .NET 語言允許對象引發不是由 [Exception](https://msdn.microsoft.com/zh-cn/library/system.exception.aspx) 派生的異常。這類異常稱為“非 CLS 異常”或“非異常”。在 Visual C# 中,您不能引發非 CLS 異常,但是可以采用兩種方法捕捉這類異常: * 在 catch (Exception e) 塊中作為 [RuntimeWrappedException](https://msdn.microsoft.com/zh-cn/library/system.runtime.compilerservices.runtimewrappedexception.aspx) 捕捉。 默認情況下,Visual C# 程序集將非 CLS 異常作為包裝異常來捕捉。如果需要訪問可通過 [WrappedException](https://msdn.microsoft.com/zh-cn/library/system.runtime.compilerservices.runtimewrappedexception.wrappedexception.aspx) 屬性訪問的原始異常,請使用此方法。本主題后面的過程將解釋如何使用此方式捕捉異常。 * 在位于 catch (Exception) 或 catch (Exception e) 塊之后的常規 catch 塊(沒有指定異常類型的 catch 塊)中。 如果您要執行某個操作(如寫入日志文件)以響應非 CLS 異常,并且不需要訪問異常信息,請使用此方法。默認情況下,公共語言運行時會包裝所有異常。要禁用此行為,請將程序集級別特性添加到您的代碼中,該特性通常在 AssemblyInfo.cs 文件中。[assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)] ## 捕捉非 CLS 異常 1. 在 catch(Exception e) block 中,使用 **as** 關鍵字來測試 e 能否強制轉換為 [RuntimeWrappedException](https://msdn.microsoft.com/zh-cn/library/system.runtime.compilerservices.runtimewrappedexception.aspx)。 2. 通過 [WrappedException](https://msdn.microsoft.com/zh-cn/library/system.runtime.compilerservices.runtimewrappedexception.wrappedexception.aspx) 屬性訪問原始異常。 下面的示例演示如何捕捉由使用 C++/CLR 編寫的類庫引發的非 CLS 異常。請注意,在此示例中,Visual C# 客戶端代碼事先已經知道要引發的異常類型為 [System.String](https://msdn.microsoft.com/zh-cn/library/system.string.aspx)。只要 [WrappedException](https://msdn.microsoft.com/zh-cn/library/system.runtime.compilerservices.runtimewrappedexception.wrappedexception.aspx) 屬性的原始類型可通過您的代碼來訪問,就可以將該屬性強制轉換回其原始類型。 ``` // Class library written in C++/CLR. ThrowNonCLS.Class1 myClass = new ThrowNonCLS.Class1(); try { // throws gcnew System::String( // "I do not derive from System.Exception!"); myClass.TestThrow(); } catch (Exception e) { RuntimeWrappedException rwe = e as RuntimeWrappedException; if (rwe != null) { String s = rwe.WrappedException as String; if (s != null) { Console.WriteLine(s); } } else { // Handle other System.Exception types. } } ``` ## 請參閱 [RuntimeWrappedException](https://msdn.microsoft.com/zh-cn/library/system.runtime.compilerservices.runtimewrappedexception.aspx) [異常和異常處理(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173160.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看