有没有真正的世界理由使用throw ex?

在C#中, throw ex几乎总是错误的,因为它会重置堆栈跟踪。 我只是想知道,这有什么现实世界吗? 我能想到的唯一原因是隐藏封闭库的内部,但这是一个非常薄弱的​​原因。 除此之外,我从未在现实世界中遇到过。 编辑:我的意思是throw ex ,就像抛出完全相同的exception而被捕获但是有一个空的堆栈跟踪,就像完全错误一样。 我知道throw ex必须作为一个语言结构存在,以允许抛出一个不同的exception( throw new DifferentException(“ex as innerException”, ex) ),并且只是想知道是否有一个现场,其中一个throw ex没有错。

c#finalizer抛出exception?

从MSDN引用: 如果Finalize或Finalize的覆盖引发exception,则运行时将忽略该exception,终止该Finalize方法,并继续完成最终化过程。 但如果我有: ~Person() { throw new Exception(“meh”); } 然后它会导致运行时exception? ps我知道这绝不会发生,但我只是对这种行为感到好奇。 我们的一个客户有一个空的尝试捕获他们的所有终结器..它甚至没有记录出错或重新对象:/

没有堆栈跟踪的exception – 如何?

我们有一个服务,它将在应用程序域级别(通过Log4net)记录未处理的exception。 我们记录了: 2014-01-28 16:49:19,636错误[49] FeedWrapperService – 未处理的System.NullReferenceException:未将对象引用设置为对象的实例。 此exception没有堆栈跟踪。 如果不对exception对象做一些疯狂的事情,那怎么可能呢? 我们的处理代码: AppDomain.CurrentDomain.UnhandledException += LogAnyExceptions; private void LogAnyExceptions(object sender, UnhandledExceptionEventArgs e) { log.Error(“unhandled”, (Exception)e.ExceptionObject); throw (Exception)e.ExceptionObject; } 在我看来,重新抛出这一点毫无意义,因为AppDomain无论如何都会随着进程而下降,但我认为它不会影响我们的情况。 Windows应用程序事件查看器还仅显示此null引用exception且没有跟踪。 我已经测试了exception处理程序日志记录,它成功记录了堆栈跟踪和任何内部exception。 如果它被我们的代码抛出,我们会看到堆栈跟踪。 如果它被第三方c#库抛出,那么,我们再次看到至少一个方法的堆栈跟踪(无论是否是重新抛出的exception)。 在这里,我们看到一个没有堆栈跟踪的托管exception。 我不知道这是怎么回事。 查看反编译的第三方库,它与非托管代码进行对话,引发此exception的事件可能在非托管域中,但是如果没有堆栈跟踪,这种情况怎么会导致托管的空引用exception呢? 这个问题的原因是间歇性的。 我们已经在生产中运行了几个月的代码,并且看过它曾经这样做过。 这非常怪异。 普遍的共识是,应该将负责此类问题的系统推送到子进程中,这样我们就可以安全自动地处理问题并重新启动,但知道发生了什么事情会很好。 编辑以包含以下评论信息: 我的exception不是标准的重新抛出,因为堆栈跟踪是空或空。 它没有重新投掷方法的名称。 进一步深入,Exception类可以从序列化信息构造,看起来序列化信息可能包含堆栈跟踪的空字符串,并且可能创建它而不会导致其他错误。 我想它可能来自那里,但我不知道它是如何起源的。

实现所有类BsonIgnoreExtraElements

我在MongoDrive中使用mongDb,我想知道如何在我的所有类中实现[BsonIgnoreExtraElements] 。 我知道通过ConventionProfile有一种方法,但我不知道如何实现它。

从面板中删除动态控件

我在Windows窗体的面板上动态生成控件,我还生成了一个用于删除控件的按钮,所有控件都在行中。 int c = 0; private void button1_Click(object sender, EventArgs e) { int v; v = c++; panel1.VerticalScroll.Value = VerticalScroll.Minimum; ComboBox combo = new ComboBox(); combo.Name = “combobox” + v ; combo.Location = new Point(30, 5 + (30 * v)); ComboBox combo2 = new ComboBox(); combo2.Name = “combobox2” + v ; combo2.Location = new Point(170, […]

Windows Phone 7 Silverlight使用会话

我正在创建一个Windows 7移动Silverlight项目。 我使用Rest api进行身份validation,使用类认证 。 我得到一个身份validation令牌作为响应,并将其分配给类属性AuthToken,因为我需要在不同的地方使用它。 有没有办法将此AuthToken存储在会话或其他任何内容中。 因为我在wp7中没有找到任何会话示例。 谢谢

Visual Studio 2017 – Expression交互发生了什么?

我广泛使用Expression interaction的CallMethodAction以MVVM友好的方式处理来自XAML的事件。 我刚刚在VS2017中创建了一个新的WPF项目,现在我看到旧的Expression命名空间已经消失了。 我在MSDN上找到了这个页面,这是我正在寻找的动作,但在引用该程序集并添加命名空间后,它不包含CallMethodAction。 那个页面是针对Silverlight的,这是WPF,所以我担心行动不再可用。 那么有人知道它是否已被删除/替换? 如何才能在viewmodel上调用事件处理程序? (我确实知道InvokeCommandAction,但我更喜欢CallMethodAction,因为它会转发原始事件参数,并允许取消预览事件。) 编辑 :只是为了前进我尝试了InvokeCommandAction但它不再以相同的方式工作,我找不到有关新用法的任何文档。 我确实在MSDN上找到了Microsoft.Xaml.Interactions命名空间的这个引用 ,该命名空间似乎包含我需要的类,但该程序集似乎不存在。 我觉得我在这里遗漏了一些明显的东西。 我不知道他们如何能够对事件做出重大改变。

绑定到对象的属性

我想将网格中的一系列TextBox 绑定到一个对象的属性中,该对象本身就是我的ViewModel(DataContext)中的另一个属性。 CurrentPerson由Name和Age属性组成 在ViewModel中: public Person CurrentPerson { get; set … (with OnPropertyChanged)} Xaml: 我不确定使用的方法,我在网格范围内设置了另一个DataContext,没有任何结果,还尝试设置源和路径,如Source = CurrentPerson,Path = Age,没有任何结果,这些都是试用,看看如果有任何改变。 我该怎么做到这一点?

如何使Moq忽略ref或out的参数

在RhinoMocks中,您可以告诉您的模拟IgnoreArguments作为一揽子声明。 在Moq中,似乎必须为每个参数指定It.IsAny()。 但是,这不适用于ref和out参数。 如何测试以下方法我需要Moq内部服务调用以返回特定结果: public void MyMethod() { // DoStuff IList errors = new List(); var result = _service.DoSomething(ref errors, ref param1, param2); // Do more stuff } 测试方法: public void TestOfMyMethod() { // Setup var moqService = new Mock(); IList errors; var model = new MyModel(); // This returns null, presumably becuase “errors” // […]

为什么接口成员没有访问修饰符?

可能重复: 为什么我不能拥有受保护的接口成员? 作为标题,在C#中。 是否有人可能想要拥有受保护或内部接口?