Tag: 线程exception

“鸭子例外”是什么意思?

在Java™教程的“例外的优势”一节中: 一个方法可以阻止任何抛出的exception,从而允许调用堆栈上方的方法来捕获它。 […] … …避免一个例外需要一些中间人方法的努力。 任何可以在方法中抛出的检查exception都必须在其throws子句中指定。 这里“鸭子例外”是什么意思? 我search了networking和FOLDOC(免费在线电脑词典),但没有发现任何看起来有希望的东西。

我是否需要创build自己的InvalidArgumentException ..我无法find任何内置types在c#

我需要创build我自己的InvalidArgumentException ..我找不到任何内置的types在C#中有没有任何库,它定义常用的exception类..谢谢

如何沉默“sys.excepthook失踪”错误?

注意:我没有试图重现下面在Windows下面描述的问题,或者使用2.7.3以外的Python版本。 引发问题的最可靠的方法是通过pipe道输出以下testing脚本(在bash下): try: for n in range(20): print n except: pass 即: % python testscript.py | : close failed in file object destructor: sys.excepthook is missing lost sys.stderr 我的问题是: 如何修改上面的testing脚本以避免脚本运行时出现错误信息(在Unix / bash )? (如testing脚本所示,错误不能被try-except所困。) 上面的例子当然是非常人造的,但是当我的脚本输出通过一些第三方软件进行input时,我遇到了同样的问题。 错误信息当然是无害的,但对最终用户来说是令人不安的,所以我想要保持沉默。 编辑:下面的脚本,不同于上面的原来的只是因为它重新定义sys.excepthook,行为完全像上面给出的。 import sys STDERR = sys.stderr def excepthook(*args): print >> STDERR, 'caught' print >> STDERR, args sys.excepthook = excepthook […]

我可以在PowerShell中获得详细的exception堆栈跟踪吗?

运行这样的脚本: 1: function foo() 2: { 3: bar 4: } 5: 6: function bar() 7: { 8: throw "test" 9: } 10: 11: foo 我懂了 test At C:\test.ps1:8 char:10 我可以得到一个详细的堆栈跟踪吗? At bar() in C:\test.ps1:8 At foo() in C:\test.ps1:3 At C:\test.ps1:11

如何在调用.LoadXml()之前检查stringinput中的有效xml

我更喜欢这样做,而不会在LoadXml()捕获exception,并将此结果作为我的逻辑的一部分。 任何想法的解决scheme,不涉及手动parsingxml自己? 我认为这个函数VB的返回值是false,而不是抛出一个XmlException。 Xmlinput是由用户提供的。 非常感谢! if (!loaded) { this.m_xTableStructure = new XmlDocument(); try { this.m_xTableStructure.LoadXml(input); loaded = true; } catch { loaded = false; } }

spring什么意思是abstract =“true”?

抽象类不能在java中实例化。 但是spring用abstract="true"表示豆的创造。 如果一个抽象类的状态只是由它的子类实例初始化(我想我是对的),那么如果我需要在抽象类中定义的方法内使用该属性,那么…是否有可能它? 我有一套代码如下: class abstract A { private Something somethingObj; // getters and setters are present. public void logSomething() { try{ //some code which throws exception } catch(Exception e){ somethingObj.logIt(e);// I have some logic inlogIt method. } } }

如何在Ruby中拯救eval?

我试图找出如何解决在Ruby 1.8.6中使用eval()代码时出现的语法错误。 我期望以下的Ruby代码: #!/usr/bin/ruby good_str = "(1+1)" bad_str = "(1+1" # syntax error: missing closing paren begin puts eval(good_str) puts eval(bad_str) rescue => exc puts "RESCUED!" end 运行时产生以下结果: 2 RESCUED! 相反,我得到的是: 2 eval_rescue.rb:8: (eval):1: compile error (SyntaxError) (eval):1: syntax error, unexpected $end, expecting ')' 看来由eval方法引发的SyntaxError正在被eval内的某个地方救起,而没有给我一个自己处理的机会。 任何人都有任何想法如何得到我想要的行为(即,我的'救援'条款从'评估'错误)?

如何从“需求”中拯救:没有这样的文件加载在ruby?

我试图从“require”中解救出来:没有这样的文件要加载到ruby中,以便提示用户指定-I标志,以防他忘记了。 基本上,代码如下所示: begin require 'someFile.rb' rescue puts "someFile.rb was not found, have you" puts "forgotten to specify the -I flag?" exit end 如果没有findsomeFile.rb ,我期望rescue部分接pipe执行,但我的假设是错误的。

java.util.AbstractList.add的UnsupportedOperationException

我有问题得到一个代码块正确运行。 我不完全确定这个代码是做什么的(我试图得到一个插件已经过时,可以正常使用我们的服务器),我只知道它每运行20分钟就会抛出一个错误。 以下是发生问题的部分代码: public class DynamicThread extends Thread { private LocalShops plugin = null; public DynamicThread(ThreadGroup tgroup, String tname, LocalShops plugin) { super(tgroup, tname); this.plugin = plugin; } public void run() { Map<ItemInfo, List<Integer>> itemStockMap = Collections.synchronizedMap(new HashMap<ItemInfo, List<Integer>>()); //Dump all the shop stock data into the map. for ( Shop shop : plugin.getShopManager().getAllShops() ) […]

为什么64位Windows不能解除用户内核用户exception?

为什么64位Windows在exception期间展开堆栈,如果堆栈穿越内核边界–32位Windows可以? 这整个问题的背景来自: 消失OnLoadexception的情况 – 在x64中的用户模式callbackexception 背景 在32位Windows中,如果我在我的用户模式代码中抛出exception,则从内核模式代码中调用该代码,这是从我的用户模式代码中调用的,例如: User mode Kernel Mode —————— ——————- CreateWindow(…); ——> NtCreateWindow(…) | WindowProc <———————+ Windows中的结构化exception处理(SEH)可以展开堆栈,通过内核模式展开,返回到我的用户代码,在那里我可以处理exception,我看到一个有效的堆栈跟踪。 但不是在64位的Windows Windows的64位版本不能这样做: 出于复杂的原因,我们不能在64位操作系统 (amd64和IA64) 上传播exception 。 自从Server 2003的第一个64位版本以来,情况一直如此。在x86上,情况并非如此 – exception通过内核边界传播,并最终走回帧 由于在这种情况下无法回溯可靠的堆栈跟踪,所以必须作出决定:让您看到非无意义的exception,或者完全隐藏它: 当时的内核架构师决定采取保守的AppCompat友好的方法 – 隐藏exception,并希望最好的。 本文继续讨论所有64位Windows操作系统的performance如何: Windows XP 64位 Windows Server 2003 64位 Windows Vista 64位 Windows Server 2008 64位 但从Windows 7(和Windows Server 2008)开始,架构师改变了他们的想法。 对于只有 64位应用程序(不是32位应用程序),它们(默认情况下)会停止抑制这些用户内核用户exception。 […]