![]() |
1
8
我的猜测是,在您的语言/框架中,您不会得到一个例外,而是
|
![]() |
2
7
一个可能的原因是
如果你运行这个应用程序,它将崩溃并烧毁,而不是像你预期的那样捕获异常。 |
![]() |
3
3
在.NET中
这个 question (catching native exceptions in C#) 可能会有帮助。 |
![]() |
4
2
假设.NET,如果EnumerateSomeCoolHardwareDevice通过PInvoke使用win32方法(访问硬件)并发生错误,则大多数本机方法都会返回错误代码。如果不处理该错误代码,并且无论如何都会调用另一个本机方法(可能是使用失败调用中的空出参数),则严重的本机错误(例如内存访问错误或类似的情况)可能会导致直接程序崩溃,不会引发异常。 |
![]() |
5
2
你试过这个属性吗 程序集:RuntimeCompatibility(WrapNonExceptionThrows=true) 它应该将任何非.NET异常包装到System.Exception中,以便在代码中捕获它。 |
![]() |
6
1
如果它只发生在生产计算机上而不是开发人员计算机上,那么它可能是由于DLL不匹配造成的。再次检查所有引用的DLL和框架是否是同一版本。 其次,如果EnumerateSomeCoolHardwaredDevice()没有抛出错误,那么它将使应用程序崩溃,因为在我的经验中,异常无法恢复堆栈(或者这是我对try/catch的理解),这在我以前发生过。 最后,Microsoft错误报告通常允许您检查将发送给MS的内容,这应该可以让您了解错误发生的位置和原因(假设其中包含可读的信息)。 检查事件查看器,因为错误也应该记录在那里,并且通常会提供关于错误的非常宝贵的详细信息源,通过在那里列出的错误进行一点挖掘,您应该能够跟踪故障。 |
![]() |
7
1
如果您在.NET版本1.1中,请使用无参数catch块,如
在.NET 2.0之前,可能存在不从System.Exception派生的本机异常。 同时连接到AppDomain unhandled exception 看看会发生什么。 |
![]() |
8
0
可能会有一个尝试…在里面接住
如果在那里捕获并处理异常,则不会命中外部异常,除非再次引发异常。 |
![]() |
9
0
(假设Java)错误和异常都是子类。
Throwable
.如果有一个断言失败
|
![]() |
10
0
我猜是发生了堆栈溢出。.NETVM只会关闭遇到堆栈溢出的发布构建过程,不会引发任何CLR异常。该函数内部可能有一个内部try/catch,它以某种方式捕获stackoverflowException,这就是为什么它也不会在调试版本中传播到代码中的原因。 最简单的方法是进行调试构建、附加调试程序并指示调试程序中断 之前 引发任何异常(在Visual Studio中,调试/异常并在“公共语言运行时异常”中勾选“引发”,也可能是其他异常,在cordbg.exe中勾选“捕获异常”)。 |
![]() |
11
0
如果它崩溃得很厉害,并且正在使用serialport对象,那么很可能是因为它在某个时刻跳到了后台线程上,这时会发生异常。iirc.dataReceived事件或从串行端口获取信息时返回后台线程上的数据。如果在此例程中引发异常,则整个应用程序将被保释。 找到后台线程并对其进行异常处理。 |
![]() |
12
0
你看到过什么类型的异常以这种方式表现?你有他们的名单吗?
有些异常将继续支撑调用堆栈,即使它们被捕获在catch块中,例如
其他的基本上是不可处理的,例如
如果是其中之一(或者我可能错过的其他一些),那么行为可能与预期的一样。如果是其他人,则需要更深入地了解更多信息。 |
|
M.Jane · 组织和编写异常类的正确方法 6 年前 |
![]() |
shubham daharwal · java中的内部捕获异常 6 年前 |
![]() |
Jon · 如何在不需要任何操作的情况下处理Python异常 6 年前 |
![]() |
felix1415 · C++捕获(标准::异常和e)与捕获(…) 6 年前 |
![]() |
k0pernikus · 如何在scala中键入可能引发异常的函数? 6 年前 |