c#在try / catch块中未捕获异常
本文关键字:捕获异常 catch try | 更新日期: 2023-09-27 18:03:54
考虑一个内部使用加密函数的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
内容来轻松地重新创建这个案例。
我删除了这个问题前面的内容,因为从注释中可以看出,它缺少一个有效的例子。
解决方案:
进入"调试"菜单,"选项"子菜单,取消勾选"当异常跨越AppDomain或managed/native边界时中断"选项。
我之前调试了一些混合/不安全的代码,完成后忘记取消勾选。