2011-08-19 25 views
2

我目前正在學習一本關於如何在運行時將xaml代碼轉換爲對象的書。Try-Catch未知行爲

我有以下代碼:

try 
{ 
    ctrl = XamlReader.Load(xaml) as UserControl; 
} 
catch (Exception exc) 
{ 
    OnXamlResult(new XamlCruncherEventArgs(exc.Message)); return; 
} 

的代碼是不是我的,我把它從書。

問題是try-catch無法正常工作,或者至少如我所知直到現在。

ctrl = XamlReader.Load(xaml) as UserControl; 

沒有捕捉異常: 在調試程序時到達行停止。

我在做什麼錯,或者我該如何解決這個問題?

「xaml」是一個字符串。它來自文本框,如果用戶正確鍵入了xaml,則程序應將xaml代碼轉換爲對象,否則應顯示相應的錯誤。

關於程序如何反應,我可以說調試停止了(它使我返回到指向錯誤的visual studio),它不像進入無限循環那樣行爲。

+3

默認的調試器打破了這種異常,嘗試運行程序不在調試器中,但明確啓動可執行文件 – sll

回答

3

這可能是調試器發生異常時發生的。在捕獲點和F5內部劃一個斷點繼續,它應該繼續並打到你的斷點。

而「破」,我不是說它失敗了,我的意思是它暫停執行的應用程序的異常行,所以這是一個好事在這種情況下。

如果您正在使用Visual Studio,您可以啓用/禁用此行爲 「的例外突破」:

  • 調試 - >例外...(按Ctrl + Alt + E)
  • 公共語言運行庫例外情況,根據需要選中右側的框。

至於異常本身,除非它專門用於顯示異常,否則可能無法加載提供的XAML字符串。

+0

是的,即使我沒有通過每次代碼達到try-catch時按下F5來放置斷點,並且例外也被捕獲)。如何停止視覺工作室繼續打擾我這個異常? –

+0

@AlexB您需要取消選中我在答案中提到的選項。 –

+0

謝謝!我的工作就像一個冠軍:D。 –