TException
türündeki istisnaları yakalayan genel bir catch işleyicisine sahip bir yöntem içeren aşağıdaki konsol uygulamasını inceleyin. Bu konsol uygulaması Visual Studio hata ayıklayıcı altında 'Debug' yapılandırma ile inşa edilmiş ve yürütülürVisual Studio 2008'i yükledikten sonra yakalama (TException) işleme bloğu davranışı hata ayıklayıcı altında neden farklıdır?
(yani bu * .vshost.exe) Bu başarısız, hem Visual Studio 2005 ve Visual Studio 2008
- I: beklediğim gibi kod davranır aşağıdaki koşullarda Görsel stuido 2008.
using System; class Program { static void Main() { Console.WriteLine(Environment.Version); CatchAnException<TestException>(); Console.ReadKey(); } private static void CatchAnException<TException>() where TException : Exception { Console.WriteLine("Trying to catch a <{0}>...", typeof(TException).Name); try { throw new TestException(); } catch (TException ex) { Console.WriteLine("*** PASS! ***"); } catch (Exception ex) { Console.WriteLine("Caught <{0}> in 'catch (Exception ex)' handler.", ex.GetType().Name); Console.WriteLine("*** FAIL! ***"); } Console.WriteLine(); } } internal class TestException : Exception { }
yükledikten sonra bu sorun yalnızca yaklaşık geldi inanıyoruz f 'Release' yapılandırması ile oluşturulmuş, başarılı.
- Visual Studio (F5) yerine doğrudan .exe aracılığıyla yürütüldüğünde, başarılı olur.
- Bir hata ayıklayıcısını
System.Diagnostics.Debugger.Launch();
satırınaMain()
satırına ekliyorsanız, yine de başarılı olur.
Konsol uygulaması Visual Studio'dan (2005 veya 2008) başlatıldığında ve bu nedenle ConsoleApplication.vshost.exe altında yürütüldüğünde, başarısız olur. İşte
arızası durumunda bu tuhaf hatasına neden oluyor Ne
2.0.50727.3068
Trying to catch a <TestException>...
*** FAIL! ***
Caught <TestException> in 'catch (Exception ex)' handler.
Expected: <TestException>
Actual: <TestException>
Result of typeof(TException) == ex.GetType() is True
benim çıkış mı?
görünüyor: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=362422&wa=wsignin1.0 Görünüşe zaten sabit ama hangi sürümünü belli değil CLR, içeride veya serbest bırakıldığında. –
@Daniel, bu CLR'de bir sorun oldu ve CLR 4.0'da (ve buna karşılık Visual Studio'nun sonraki sürümünde) düzeltilecek. – JaredPar
Ayrıca, hata 64 bit CLR kullanılarak yok. (https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=386652) –