Questions tagged «exception»

异常是一种异常情况,需要偏离程序的正常流程。通常,异常不应导致完全失败,而应由异常处理程序来处理。异常处理是许多编程语言中的内置构造。通常,通过展开堆栈来处理异常,从而回滚到异常范围之外的已定义状态,然后调用处理程序块或例程。

9
.NET-实现“捕获所有异常处理程序”的最佳方法是什么
我想知道最好的方法是“如果所有其他方法都失败了,那就赶上它”。 我的意思是,您正在处理应用程序中尽可能多的异常,但是仍然有一定的错误,因此我需要拥有一些可以捕获所有未处理的异常的东西,以便我可以收集信息并将其存储在数据库中或提交它们到网络服务。 AppDomain.CurrentDomain.UnhandledException事件是否捕获所有内容?即使应用程序是多线程的? 旁注:Windows Vista公开了本机API函数,允许任何应用程序在崩溃后恢复自身...现在想不起来的名称...,但我宁愿不使用它,因为许多用户仍在使用Windows XP。

24
“内存不足”是否是可恢复的错误?
我已经进行了很长时间的编程,并且看到的程序在内存不足时会尝试清理并退出,即正常失败。我不记得上一次看到一个实际尝试恢复并继续正常运行的情况了。 如此多的处理取决于能否成功分配内存,尤其是在垃圾回收语言中,似乎内存不足错误应归类为不可恢复。(不可恢复的错误包括堆栈溢出之类的东西。) 使它成为可恢复的错误的有力论据是什么?



12
VBA错误处理的好模式
在VBA中有哪些好的错误处理模式? 特别是在这种情况下,我该怎么办: ... some code ... ... some code where an error might occur ... ... some code ... ... some other code where a different error might occur ... ... some other code ... ... some code that must always be run (like a finally block) ... 我要处理这两个错误,并在可能发生错误的代码之后恢复执行。同样,无论最后抛出什么异常,都必须始终运行最后的最终代码。我怎样才能达到这个结果?

10
如何在C#中序列化Exception对象?
我正在尝试在C#中序列化Exception对象。但是,由于Exception类未标记为,因此似乎是不可能的[Serializable]。有办法解决这个问题吗? 如果在应用程序执行过程中出了点问题,我想知道发生的异常。 我的第一反应是将其序列化。

6
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 …

2
C ++中的对象销毁
在C ++中确切地销毁对象是什么意思?因为没有垃圾收集器,我是否必须手动销毁它们?异常如何发挥作用? (注意:这本来是Stack Overflow的C ++ FAQ的条目。如果您想批评以这种形式提供FAQ的想法,那么开始所有这些工作的meta上的发布将是这样做的地方。该问题在C ++聊天室中进行监控,该问题最初是从FAQ想法开始的,所以提出这个想法的人很可能会读懂您的答案。)

5
什么是AssertionError?在那种情况下,我应该从自己的代码中抛出它?
在“ Effective Java,第二版”书的第2项中,有此代码段,其中的作者希望禁止空初始化对象。 class Example { private Example() { throw new AssertionError(); } } 引发异常的类型使我感到困惑。 我不知道AssertionError是因为缺少更合适的错误还是因为这种方式而引发了。 据我了解,当assert语句失败时,框架会抛出此错误。另外,在Javadoc中,它只是写成的 抛出[AssertionError]来表明断言失败。 但是我在这里看不到任何断言(真假陈述)受到侵犯。当然,“您不得实例化此类的一个项目”声明已被违反,但是如果这是其背后的逻辑,那么我们都应该AssertionError到处抛出s,这显然不会发生。 FWIW,我刚扔了一个 new IllegalStateException("Must not instantiate an element of this class") 那有什么问题吗?在那种情况下AssertionError,我应该自己编写一个代码? 抱歉,这只是一个微妙的疑问,但是我在代码中经常使用此模式,所以我想确保自己做对了。

6
如何停止在日志中截断的堆栈跟踪
在Java日志中,很多时候我会得到类似以下内容的信息: Caused by: java.sql.BatchUpdateException: failed batch at org.hsqldb.jdbc.jdbcStatement.executeBatch(jdbcStatement.java:1102) at org.hsqldb.jdbc.jdbcPreparedStatement.executeBatch(jdbcPreparedStatement.java:514) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242) ... 113 more 有谁知道如何显示完整的堆栈跟踪(即显示其他113行)? Throwable的JavaDocs(用于Java 7)对正在发生的事情有非常详细的解释。

9
未检测到在多处理池中引发的异常
看来,当从multiprocessing.Pool进程引发异常时,没有堆栈跟踪或任何其他指示其已失败的迹象。例: from multiprocessing import Pool def go(): print(1) raise Exception() print(2) p = Pool() p.apply_async(go) p.close() p.join() 打印1并静默停止。有趣的是,引发BaseException可以工作。有什么办法可以使所有异常的行为与BaseException相同?

4
在Javascript中,即使从不抛出异常,使用try-catch块是否昂贵?
当没有任何异常抛出时,使用多个try-catch块是否“缓慢”?我的问题与这一问题相同,但对于JavaScript。 假设我有20个在其中具有try-catch块的函数,以及另一个函数,在这20个函数中的每个函数都调用时,它们都不抛出异常。由于有try-catch块,我的代码执行速度会变慢还是变差?


2
从构造函数抛出后调用析构函数
我曾经认为在C ++中,如果构造函数引发异常,则不会调用此“部分构造”类的析构函数。 但是似乎在C ++ 11中不再是这样:我使用g ++编译了以下代码,并将其打印X destructor到控制台。为什么是这样? #include <exception> #include <iostream> #include <stdexcept> using namespace std; class X { public: X() : X(10) { throw runtime_error("Exception thrown in X::X()"); } X(int a) { cout << "X::X(" << a << ")" << endl; } ~X() { cout << "X destructor" << …
73 c++  exception  c++11 

14
验证数据时抛出异常是好事还是坏事?
验证数据时,我已经习惯了执行以下操作: 注意:每张支票我都没有真正的布尔值。这仅是示例。 另一个注意事项:测试期间的所有错误处理均正确完成。在try-catch中抛出的唯一异常是我自己的。 try { if (validCheckOne = false) { throw new Exception("Check one is bad"); } if (validCheckTwo = false) { throw new Exception("Failed because of check2"); } if(validCheckTen = false) { throw new Exception("Yet another failure on your part: check10."); } } catch(Exception e) { MessageBox.Show("Your stupid data …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.