try / catch块

时间:2016-08-25 14:56:00

标签: c# encryption

考虑使用内部加密函数的WPF应用程序:

using System;
using System.Security.Cryptography;
using System.Windows;

namespace CryptoExceptionHandling {
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
            try {
                MakeCryptoException();
            } catch (CryptographicException x) {
                MessageBox.Show(x.Message);
            }
        }

        private void MakeCryptoException() {
            using (var csp = new RSACryptoServiceProvider(1024, new CspParameters { ProviderType = 1 })) {
                var data = new byte[128];
                new Random().NextBytes(data);
                csp.Decrypt(data, false);
            };

        }

    }
}

我希望这个程序能够显示一个带有异常的消息框。当我的应用程序提供的某些数据无效时,该程序会模拟一个案例。

我不希望应用程序崩溃,我希望应用程序执行更有意义的操作,例如显示“拒绝访问”或“无效数据”屏幕。

如何捕捉异常?您可以通过创建一个空的WPF应用程序并将下面的代码粘贴为MainWindow.cs内容来轻松地重新创建此案例。

我删除了此问题的先前内容,因为它可以在评论中观察到 - 它缺少一个有效的例子。

1 个答案:

答案 0 :(得分:0)

解决方案:

转到DEBUG菜单,选项子菜单,取消选中“当异常跨越AppDomain或托管/本地边界时中断”选项。

我之前调试了一些混合/不安全的代码,忘了在完成后取消选中它。