Tag: exception

NUnitunit testing具有“ExpectedException”但仍然在exception时失败

我有一个unit testing失败,因为抛出了System.ArgumentException ,即使我期待它并且它是故意的行为 – 我错过了什么? [Test] [ExpectedException(typeof(ArgumentException), ExpectedMessage = “Seconds from midnight cannot be more than 86400 in 010100712386401000000012”)] public void TestParsingCustomReferenceWithInValidSecondsFromMidnight() { // I am expecting this method to throw an ArgumentException: CustomReference.Parse(“010100712386401000000012”); } 我也试过没有设置ExpectedMessage – 没有区别。

起源不明的故障转储

我的应用程序崩溃跟随CallStack出错(来自WinDbg): ntdll!ZwWaitForMultipleObjects+0xa KERNELBASE!WaitForMultipleObjectsEx+0xe8 kernel32!WaitForMultipleObjectsExImplementation+0xb3 clr!WaitForMultipleObjectsEx_SO_TOLERANT+0x91 clr!Thread::DoAppropriateAptStateWait+0x56 clr!Thread::DoAppropriateWaitWorker+0x1b1 clr!Thread::DoAppropriateWait+0x73 clr!CLREvent::WaitEx+0xc1 clr!CLREventWaitWithTry+0x5c clr! ?? ::FNODOBFM::`string’+0x6286a clr!AssemblySecurityDescriptor::UpgradePEFileEvidenceToAssemblyEvidence+0x11d clr!Assembly::ExecuteMainMethod+0xcb clr!SystemDomain::ExecuteMainMethod+0x452 clr!ExecuteEXE+0x43 clr!CorExeMainInternal+0xc4 clr!CorExeMain+0x15 mscoreei!CorExeMain+0x41 mscoree!CorExeMain_Exported+0x57 kernel32!BaseThreadInitThunk+0xd ntdll!RtlUserThreadStart+0x1d 这是一个托管应用程序,根据WinDbg,有61个进程/线程从该应用程序运行。 在WinDbg中,当键入!threads时,它表示没有找到导出线程。 它没有说明是什么错误造成的(在Visual Studio 2010中,它表示NullReferenceException)。 我很疯狂,我认为这与USB串行控制器有关,但我把它放到另一个应用程序中,它仍然崩溃(尽管不像之前那样100%,而是80%)。 这个exception/错误完全没有我,我无法弄清楚如何解决它。 使用.loadby sos clr更新: 0:000> !threads ThreadCount: 23 UnstartedThread: 0 BackgroundThread: 17 PendingThread: 0 DeadThread: 4 Hosted Runtime: no PreEmptive Lock ID OSID ThreadOBJ State GC […]

是否有exception错误类值列表及其含义? 特别是sqlexception

我正在使用数据库并捕获exception以检查各种条件。 我不能简单地捕获sqlException,因为它可能意味着很多东西,并且通常使用 catch (SqlException e) { if (e.Errors[0].Class == 14) { return 0; } else …….. 检查具体案例。 在这个例子中,第14类(至少据我所知)表示重复的条目。 另一个类意味着无法找到服务器,或拒绝连接或登录错误等。有谁知道可以找到这些错误类的列表? 谷歌搜索这是很困难的,因为任何带有“类”的东西都显而易见。

MySql + entity framework =每个派生表都必须有自己的别名

我必须从我的C#程序访问另一个开发人员的一些MySql视图。 因此,经过一些搜索,我决定entity framework,并使用此问题中提到的驱动程序: 使用MySQL与entity framework ( MySQL .NET Connector )。 现在,我正在尝试获取一个视图的第一个元素: myEntities.events.First(); 在那里,我得到一个例外: System.Data.EntityCommandExecutionException was unhandled Message=An error occurred while executing the command definition. See the inner exception for details. Source=System.Data.Entity StackTrace: at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues) at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator() at System.Linq.Enumerable.First[TSource](IEnumerable`1 source) at System.Data.Objects.ELinq.ObjectQueryProvider.b__0[TResult](IEnumerable`1 sequence) at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 […]

exception会在try / catch上下文中丢失部分堆栈跟踪

我有两个例子。 在第一种情况下,调试器捕获未处理的exception: static void Main(string[] args) { Exec(); } static void Exec() { throw new Exception(); } 并且exception具有完整的堆栈跟踪: at ConsoleApplication28.Program.Exec() at ConsoleApplication28.Program.Main(String[] args) at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object […]

在非托管回调的委托中抛出exception的含义

在非托管回调期间使用的委托中抛出exception会产生什么影响或未被感知的后果? 这是我的情况: 非托管C: int return_callback_val(int (*callback)(void)) { return callback(); } 管理C#: [DllImport(“MyDll.dll”)] static extern int return_callback_val(IntPtr callback); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] delegate int CallbackDelegate(); int Callback() { throw new Exception(); } void Main() { CallbackDelegate delegate = new CallbackDelegate(Callback); IntPtr callback = Marshal.GetFunctionPointerForDelegate(delegate); int returnedVal = return_callback_val(callback); }

正确使用stacktrace进行调试

以下代码行导致我出现exception plug.Instance.AddDocuments(new Int32[] { val_pid }, val_ptype, val_doccat, val_subcat, val_doctype, val_notes, val_summary, SummaryAppendOptions.None, val_docStatus, new String[] { PDFFile }) 这是一个例外细节。 System.Exception was caught Message=Object reference not set to an instance of an object. – Error when trying to save document Source=SimsBridge StackTrace: at SimsBridge.Bridge.AddDocuments(Int32[] personIds, Int32 PersonType, String docCatagory, Int32 subCatagory, String docType, String notes, […]

.NET4中未观察到的任务exception

根据一些文章和博客,像下面这样的代码应该导致.NET 4中的exception static void Main(string[] args) { Task.Factory.StartNew(() => { throw new Exception(); }); Thread.Sleep(1000); GC.Collect(); GC.WaitForPendingFinalizers(); Console.WriteLine(“Completed”); } 预期例外: 未处理的exception:System.AggregateException:通过等待任务或访问其Exception属性未观察到任务的exception。 结果,终结器线程重新抛出了未观察到的exception。 —> System.InvalidOperationException:由于对象的当前状态,操作无效。 但它并没有。 我的PC上的.NET 4应用程序就像.NET 4.5一样: 默认情况下,他们不会抛出该聚合exception 他们在配置文件中检测到以下设置: 看起来.NET 4已被修补以获得与.NET 4.5相同的行为。 它是真的还是我的配置有些麻烦? 或者,如果安装了4.5,任何.NET4应用程序(不是以4.5为目标)的行为都会如此? 提前致谢。

调用SuspensionManager.SaveAsync()时出现exception

我正在构建一个Windows 8应用程序,并提出以下exception: SuspensionManager失败 运行以下代码时: private async void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); await SuspensionManager.SaveAsync(); deferral.Complete(); } exception发生在方法的第三行,并没有真正给出任何细节。 我没有在网上找到任何有用的信息。 谁看过这个吗? //编辑 这可能与我使用Windows 8 Facebook SDK的dynamic类型变量有关。 是不允许dynamic变量? //编辑2 这是dynamic变量的用法: dynamic result = await FB.GetTaskAsync(“fql”, parameters); if (result.data.Count > 0) { return result.data[0].src_big as string; } 以及exception的调用堆栈: mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task task) + 0x5e bytes mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task) […]

区分相同类型的exception

区分同一类型的两个exception但出于不同原因抛出的最佳方法是什么。 例如,可以抛出InvalidOperationException尝试访问空序列,但是在使用Concurrent对象时也可以抛出它(例如BlockingCollection ) 从我的阅读中我得出结论,使用BlockingCollection.CompleteAdding()来表示完成是完全正常的,因此需要捕获exception并正确处理(例如退出任务) 在不使用消息内容的情况下过滤这些内容的最佳方法是什么? 编辑 :它们似乎都具有相同的HResult值。