Tag: 线程exception

什么exception子类内置到PHP中?

我还没有findPHP中所有内置的Exception子类的列表。 在创build我自己的exception子类之前,我宁愿使用内build的。 例如,我知道InvalidArgumentException存在,但似乎没有什么比较Java的NullPointerException。 有没有人有或可以链接到PHP中可用的exception子类的列表?

在.netexception中如何获得具有参数值的堆栈跟踪

我正在尝试在.net(c#)中添加一个未处理的exception处理程序,该程序应该尽可能为“用户”提供帮助。 最终用户大多是程序员,所以他们只需要提示他们操作错误的对象。 我正在开发一个窗口类似于Windows XP的错误报告,当一个应用程序崩溃,但给出尽可能多的imediate信息imediatly关于抛出的exception。 虽然堆栈跟踪使我(因为我有源代码)查明问题的根源,用户没有它,所以他们丢失没有进一步的信息。 不用说,我不得不花费大量的时间来支持这个工具。 有几个系统exception,如Dictionary集合引发的KeyNotFoundExceptionexception,因为它们没有在消息中包含没有find的关键字,所以这真是令我烦恼。 我可以使用大量的try catch块来填充代码,但是它相当具有侵略性,并且有更多的代码需要维护,更不用说更多的string了,而这些string必须被本地化。 最后问题:有没有什么办法来获得(在运行时)调用堆栈跟踪中的每个函数的参数的值? 只有这一点可以解决90%的支持电话。

捕获的.NETexception是意外的空

请参阅下面的说明正在发生的事情 我有一个非常奇怪的问题,捕获的exception是null。 代码使用MEF并尽力报告组合错误。 使用debugging器,我可以看到抛出的exception( InvalidOperationException ),但是当它被下面的代码中的最后一个catch块捕获时, exvariables为null。 在debugging器和正常执行代码时都是如此。 static T ResolveWithErrorHandling<T>() where T : class { try { IocContainer.Compose(Settings.Default.IocConfiguration); return IocContainer.Resolve<T>(); } catch (ReflectionTypeLoadException ex) { // … special error reporting for ReflectionTypeLoadException } catch (Exception ex) { // ex is null – that should not be possible! // … general error reporting for other […]

ThreadPools中的exception处理

我有一个ScheduledThreadPoolExecutor似乎在吃exception。 如果提交的Runnable引发exception,我希望执行程序服务通知我。 例如,我想下面的代码至less打印IndexArrayOutOfBoundsException的stackTrace threadPool.scheduleAtFixedRate( new Runnable() { public void run() { int[] array = new array[0]; array[42] = 5; } }, 1000, 1500L, TimeUnit.MILLISECONDS); 作为一个侧面的问题。 有没有办法为ScheduledThreadPoolExecutor编写一个通用的try catch块? //////////原文问题结束////////////// 正如所build议的,以下装饰工程运作良好。 public class CatcherTask implements Runnable{ Runnable runMe; public CatcherTask(Runnable runMe) { this.runMe = runMe; } public void run() { try { runMe.run(); } catch (Exception ex){ […]

神秘的“DataGrid的WinRT端口中没有足够的配额可用于处理此命令”

9月26日编辑 请参阅下面的完整背景。 tl; dr:数据网格控件导致了奇怪的exception,我正在寻找帮助,隔离原因并find解决scheme。 我已经进一步缩小了这一点。 我已经能够在一个更小的testing应用程序中重现行为,更可靠地触发了不稳定的行为。 我绝对可以排除线程和(我认为)内存问题。 新的应用程序不使用任务或其他线程/asynchronousfunction,我可以简单地触发未处理的exception,只需添加返回常量的属性到DataGrid中显示的对象的类。 这表明,问题是在非托pipe资源耗尽或我还没有想到的问题。 修改后的程序是这样构成的。 我创build了一个名为EntityCollectionGridView的用户控件,它有一个标签和一个数据网格。 在控件的Loaded事件处理程序中,我将一个List<TestClass>分配给1000或10000行的数据网格,让网格生成列。 此用户控件在页面的OnNavigatedTo事件(或Loaded ,它似乎并不重要)的MainPage.xaml中实例化2-4次。 如果发生exception,则会在MainPage显示后立即发生。 有趣的是,这种行为看起来并不随所显示的行数而变化(它将可靠地工作10000行或者可靠地失败,每个网格中只有1000行),而是与所有网格中的总列数在给定的时间加载。 有20个属性显示,4个网格工作正常。 有35个属性和4个网格,抛出exception。 但是,如果我消除两个网格,35个属性相同的类将正常工作。 请注意,我添加到TestClass从20跳到35列的所有属性的forms是: public string StringXYZ { get { return "asdfasdfasdfasdfasf"; } } 所以,在后台数据中没有额外的内存(而且,我不认为内存压力是问题)。 你们都在想什么? 再次,任务pipe理器中的句柄/用户对象/等看起来不错,但有什么我可能会丢失? 原帖 我一直在研究Silverlight Toolkit DataGrid的一个端口到WinRT,在简单的testing(多种configuration和多达10000行)方面做得不错。 然而,正如我试图将其embedded到另一个WinRT应用程序,我已经遇到了一个零星的exception(typesSystem.Exception,在App.UnhandledException处理程序中引发),这是很难debugging。 Not enough quota is available to process this command. (Exception from HRESULT: 0x80070718) 错误始终可重现,但不是确定性的。 也就是说,我可以在每次运行应用程序时都发生这种情况,但是通过执行相同次数的相同步骤并不总是会发生。 该错误似乎发生在页面转换(无论是导航到新的页面,还是回到上一页),而不是(例如)更改DataGrid的ItemsSource时。 应用程序结构基本上是通过层次结构进行recursion访问,每个层次结构都显示一个页面。 […]

noexcept,堆栈展开和性能

斯科特·迈耶斯(Scott Meyers)的新C ++ 11书以下草稿 (第2页第7-21行) 调用堆栈展开和可能展开的区别对代码生成有着惊人的巨大影响。 在一个noexcept函数中,如果一个exception传播出函数,优化器不需要保持运行时堆栈处于不可展开状态,也不必确保noexcept函数中的对象按照构造的相反顺序销毁, 。 结果是更多的优化机会,不仅在noexcept函数体内,而且在函数被调用的地方。 这种灵活性只适用于noexceptfunction。 带有“throw()”exception规范的函数缺less它,就像没有exception规范的函数一样。 相比之下, “C ++性能技术报告”第5.4节则描述了实现exception处理的“代码”和“表格”方式。 特别是,当没有任何exception抛出时,“table”方法显示没有时间开销,只有空间开销。 我的问题是这样的 – 斯科特·迈耶斯(Scott Meyers)谈论的是什么样的优化? 为什么这些优化不适用于throw() ? 他的意见只适用于2006 TR中提到的“代码”方法吗?

是否有从Python的OSError获取信息的跨平台方式?

例如,在一个简单的目录创build操作,我可以这样做一个OSError: (Ubuntu Linux) >>> import os >>> os.mkdir('foo') >>> os.mkdir('foo') Traceback (most recent call last): File "<stdin>", line 1, in <module> OSError: [Errno 17] File exists: 'foo' 现在我可以捕捉到这样的错误: >>> import os >>> os.mkdir('foo') >>> try: … os.mkdir('foo') … except OSError, e: … print e.args … (17, 'File exists') 是否有一种跨平台的方式,我可以知道17或“存在的文件”总是意味着相同的东西,这样我可以根据情况采取不同的行为? (这是另一个问题 。)

为什么我的exception类需要序列化?

当你用类Exception(用于创build新的exception)扩展一个类时,你会得到一个警告,要有一个serialVersionUID。 我知道serialVersionUID在序列化和反序列化中起着重要的作用,但是当我的exception需要被序列化时呢? 任何人都可以给我一个实例,我想我的自定义exception类有序列化和反序列化?

如何确定exception是否属于特定types

我有一段try catch代码: try { … } catch(Exception ex) { ModelState.AddModelError( "duplicateInvoiceNumberOrganisation", "The combination of organisation and invoice number must be unique"); } 对于这段代码,我试图将一条logging插入到数据库中:dba已经设置好了,以便数据库检查重复项,如果有重复项则返回一个错误。 目前,正如您所看到的,无论发生什么错误,我都会向模型添加相同的错误。 我希望它改变,所以这个错误只会被添加到模型,如果它是由dba设置的重复错误引起的。 以下是我想要捕捉的错误。 注意它是在内部例外。 谁能告诉我如何具体抓住这一个?

多次尝试赶上还是一个?

通常情况下,我会这样做: try { code code that might throw an anticipated exception you want to handle code code that might throw an anticipated exception you want to handle code } catch { } 这样做有什么好处吗? code try { code that might throw an anticipated exception you want to handle } catch { } code try { code […]