Tag: 例外

Visual Studio 2010不会停止在Socket.BeginReceive()回调中的未处理exception – 为什么?

通常,在附加调试器时,即使“exception”对话框在“已抛出”列中没有exception类型的勾号,Visual Studio 2010也会在未处理的exception处停止。 这里的关键字未处理; 所述对话框仅指处理的exception。 但是,在下面的最小示例中,Visual Studio 2010不会停止在我的exception中,即使它作为第一次机会exception出现在立即窗口中: 编辑:我发布的第一个最小的例子是我收到的第一个答案修复,但不幸的是下面的例子仍然显示问题: using System; using System.Net.Sockets; namespace SocketTest { class Program { static void Main(string[] args) { var listener = new TcpListener(8080); listener.Start(); AsyncCallback accepter = null; accepter = ar => { var socket = listener.EndAcceptSocket(ar); var buffer = new byte[65536]; AsyncCallback receiver = null; receiver = ar2 […]

来自HRESULT的exception:0x80131040

Warning 1 D:\MyPath\SomeAscx.cs: ASP.NET runtime error: Could not load file or assembly ‘HtmlAgilityPack, Version=1.4.0.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 我删除了引用,并没有在代码中使用它为什么这仍然是一个问题。 我尝试过清洁解决方案,重建,打开和关闭解决方案,但仍然没有成功。 有没有人遇到过这个问题?

如何知道System.Windows.Forms.dll中System.InvalidOperationException的详细信息?

运行我的应用程序时,我在Visual Studio的“输出”面板中找到了exception日志。 System.Windows.Forms.dll中发生了’System.InvalidOperationException’类型的第一次机会exception 该应用程序的架构师如下。 第二个线程:将“将项目添加到列表视图”或“将项目更改为列表视图”命令排入队列。 主线程:从队列中出队并执行每个命令定义的添加或更改操作。 我想知道调用的InvalidOperationException的详细信息,但它只显示在“输出”面板上,所以我无法捕获它以查看堆栈跟踪。 有没有办法知道它?

找到不是直接来自我的代码的托管exception的来源?

如果这真的是一个超级用户问题我提前道歉…我只是不确定,但这似乎更多的开发。 一边而不是技术支持方面。 🙂 这不一定是个问题,但它确实让我在我的系统上完全疯狂。 它也只发生在我的电脑上。 当我启动任何应用程序,甚至是空白的WPF应用程序时,我看到四个例外: 在PresentationCore.dll中发生了’System.IO.DirectoryNotFoundException’类型的第一次机会exception mscorlib.dll中发生了’System.ArgumentException’类型的第一次机会exception mscorlib.dll中发生了’System.ArgumentException’类型的第一次机会exception 在PresentationCore.dll中发生了’System.InvalidOperationException’类型的第一次机会exception 为了弄清楚它们来自何处,我然后设置VS2008来打破任何抛出的CLRexception,这里是信息: 例外#1: 找不到路径’D:\ Dell \ Reader2.0 \ SPLASH.SYS \ fonts \ AscenderUni.ttf’的一部分。 例外#2: 不支持文化名称’ug’。 参数名称:名称 例外#3: 不支持文化名称’ug’。 参数名称:名称 例外#4: IetfLanguageTag’ug’没有注册CultureInfo。 我通过Process Monitor和Process Explorer进行了调查。 Process Monitor显示我的应用程序正在执行一个RegQueryValue,我当然不负责……但是一些DLL(可能来自Dell crapware)正在被我的进程加载并正在读取这个regkey。 然后我查看了Process Explorer,希望看到我的应用程序正在加载哪些DLL,但无法找到该信息。 然后我尝试了PrcView并看到了我的应用程序正在加载的模块。 我很惊讶地看到有多少其他模块被加载,但我没有看到戴尔相关的任何东西。 我也想知道如何将Norton Internet Security DLL加载到我的进程中,但我认为这是有意的,Norton会采取一些特殊措施来确保进程可以安全执行。 我还能做些什么来识别和删除这些例外的来源? UPDATE 不确定这是否让我感到困惑。 这个exception是在我的应用程序由于某种原因加载的DLL中引发的(我没有从我的项目中引用与Dell相关的任何内容)。 我现在卸载了那个应用程序,我仍然得到了愚蠢的例外。 这一切在技术上都很好,因为exception是在某个地方处理的,可能是在那个DLL中,但是我只是因为运行我的应用程序时弹出了四条额外的消息(实际上是8,因为我必须关闭每个exception的两个对话框)。 叫我懒,但我从来没有问过这个该死的DLL首先加载。 🙂 也许现在是时候使用msconfig开始禁用某些戴尔服务了。 我实际上有空闲时间后会玩这个。

为什么catch语句没有捕获所有exception?

我正在测试下面的方法,我意识到当我输入错误的文件名时,错误会被捕获,但是当我在指定的位置上没有元素时, IndexOutOfBounds的错误会使程序崩溃。 后者也用于转换错误。 private static IEnumerable Initialize() { try { string[] things = System.IO.File.ReadAllLines(“things.txt”); return things.Select(_ => new Thing { Name = _.Split(‘;’)[0], Id = Convert.ToInt32(_.Split(‘;’)[0]) }); } catch(Exception exception) { Console.WriteLine(exception.Message); return new List(); } } 尽管catch中最常见的Exception类型,为什么不处理某些错误? 是否与LINQ表达式失败有关? 如果是这样,我该如何强行捕捉呢?

为什么main()中的try-catch不好?

有人可以向我解释为什么在main()方法中有一个try-catch来捕获任何未处理的exception是不合适的吗? [STAThread] static void Main() { try { Application.Run(new Form1()); } catch (Exception e) { MessageBox.Show(“General error: ” + e.ToString()); } } 我知道这是不好的做法,但不确定原因。

C#中的exception处理:多次尝试/捕获与一次

每种方法有多个try{} catch{}语句是一种好习惯吗?

LIST AddRange抛出ArgumentException

我有一个特殊的方法偶尔崩溃与ArgumentException: Destination array was not long enough. Check destIndex and length, and the array’s lower bounds.: at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable) at System.Collections.Generic.List`1.CopyTo(T[] array, Int32 arrayIndex) at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection) at System.Collections.Generic.List`1.AddRange(IEnumerable`1 collection) 导致此崩溃的代码如下所示: List objects = new List(100); objects = FindObjects(someParam); objects.AddRange(FindObjects(someOtherParam); 根据MSDN,List 。AddRange()应根据需要自动调整大小: 如果新的Count(当前Count加上集合的大小)将大于Capacity,则通过自动重新分配内部数组以容纳新元素来增加List […]

例外与特殊回报值

编程中哪一个更好? 我不是在谈论完全排他性。 对于以下内容更有用: list.Find ,你得到default(T)或你的值,而不是ValueNotFoundexception(例子)。 要么 list.IndexOf ,得到-1或正确的索引。

抛出未处理的枚举值的正确exception是什么?

这是我关于未处理的枚举案件的另一个问题的另一个案例,我建议将其作为一个单独的问题提出。 假设我们有SomeEnum并且有一个switch语句来处理它: enum SomeEnum { One, Two } void someFunc() { SomeEnum value = someOtherFunc(); switch(value) { case One: … break; case Two: … break; default: throw new ??????Exception(“Unhandled value: ” + value.ToString()); } } 如您所见,我们处理所有可能的枚举值,但仍保留默认值,以防添加新成员,并且我们希望确保我们知道丢失的处理。 我的问题是:在你想要通知给定的代码路径没有被处理/实现或者从未被访问过的情况下,什么是正确的exception? 我们曾经使用过NotImplementedException但它似乎不合适。 我们的下一个候选者是InvalidOperationException但该术语听起来不正确。 什么是正确的,为什么?