Questions tagged «exception»

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

4
相当于e.printStackTrace的python
我知道print(e)(其中e是一个异常)会打印发生的异常,但是,我试图找到与Java等效的python,e.printStackTrace()它可以将异常确切地跟踪到发生的那一行,并打印出整个轨迹。 谁能告诉我e.printStackTrace()Python 的等效功能吗?

15
在Python的调用者线程中捕获线程的异常
我对Python和多线程编程非常陌生。基本上,我有一个脚本可以将文件复制到另一个位置。我希望将其放置在另一个线程中,以便可以输出....以指示脚本仍在运行。 我遇到的问题是,如果无法复制文件,它将引发异常。如果在主线程中运行,这没关系;但是,具有以下代码不起作用: try: threadClass = TheThread(param1, param2, etc.) threadClass.start() ##### **Exception takes place here** except: print "Caught an exception" 在线程类本身中,我试图重新引发异常,但是它不起作用。我已经看到这里的人问类似的问题,但是他们似乎都在做比我想做的事情更具体的事情(而且我不太了解所提供的解决方案)。我见过有人提到的用法sys.exc_info(),但是我不知道在哪里或如何使用它。 非常感谢所有帮助! 编辑:线程类的代码如下: class TheThread(threading.Thread): def __init__(self, sourceFolder, destFolder): threading.Thread.__init__(self) self.sourceFolder = sourceFolder self.destFolder = destFolder def run(self): try: shul.copytree(self.sourceFolder, self.destFolder) except: raise

7
Exception.Message与Exception.ToString()
我有正在记录的代码Exception.Message。但是,我读了一篇文章,指出最好使用Exception.ToString()。使用后者,您可以保留有关该错误的更多关键信息。 这是真的,继续所有代码记录Exception.Message是否安全? 我还在log4net上使用基于XML的布局。是否Exception.ToString()可能包含无效的XML字符,这可能会引起问题?

15
C ++显示堆栈异常跟踪
如果抛出异常,我想有一种向用户报告堆栈跟踪的方法。做这个的最好方式是什么?是否需要大量的额外代码? 回答问题: 我希望它可以携带。我希望弹出信息,因此如果出现错误,用户可以复制堆栈跟踪并通过电子邮件发送给我。

25
您如何实施重试捕获?
Try-catch旨在帮助处理异常。这意味着它将以某种方式帮助我们的系统更强大:尝试从意外事件中恢复。 我们怀疑执行和指令(发送消息)时可能会发生某些事情,因此将其包含在try中。如果发生了几乎不可预料的事情,我们可以采取一些措施:编写渔获物。我不认为我们打电话来只是记录异常。我认为catch块旨在为我们提供从错误中恢复的机会。 现在,假设我们从错误中恢复了,因为我们可以修复错误所在。重试可能是非常好的: try{ some_instruction(); } catch (NearlyUnexpectedException e){ fix_the_problem(); retry; } 这将很快陷入永恒的循环,但是假设fix_the_problem返回true,然后我们重试。鉴于Java中没有这样的东西,您将如何解决此问题?解决该问题的最佳设计代码是什么? 鉴于我已经知道我所要的东西并没有被Java直接支持,所以这就像一个哲学问题。

15
如何使用try catch进行异常处理是最佳实践
在维护甚至声称自己是高级开发人员的同事的代码的同时,我经常看到以下代码: try { //do something } catch { //Do nothing } 或者有时他们将日志记录信息写入日志文件,例如以下代码try catch块 try { //do some work } catch(Exception exception) { WriteException2LogFile(exception); } 我只是想知道他们所做的是最佳做法吗?这让我感到困惑,因为在我的思考中,用户应该知道系统会发生什么。 请给我一些建议。

7
在函数签名中抛出关键字
throw在函数签名中使用C ++ 关键字被视为不良做法的技术原因是什么? bool some_func() throw(myExc) { ... if (problem_occurred) { throw myExc("problem occurred"); } ... }
199 c++  exception 



24
为什么不将异常用作常规控制流?
为了避免我可能会使用Google的所有标准答案,我将提供一个示例,您可以随意攻击。 C#和Java(和太多的人)有很多类型的一些“溢出”的行为我不喜欢在所有(如type.MaxValue + type.SmallestValue == type.MinValue例如: int.MaxValue + 1 == int.MinValue)。 但是,从我的恶毒天性来看,我会通过将这种行为扩展为“ Overridden” DateTime类型来加重这种伤害。(我知道DateTime它在.NET中是密封的,但是出于这个示例的缘故,我使用的伪语言与C#完全一样,但DateTime没有密封)。 覆盖的Add方法: /// <summary> /// Increments this date with a timespan, but loops when /// the maximum value for datetime is exceeded. /// </summary> /// <param name="ts">The timespan to (try to) add</param> /// <returns>The Date, incremented with …

25
得到java.lang.VerifyError的原因
我正在调查以下内容 java.lang.VerifyError java.lang.VerifyError: (class: be/post/ehr/wfm/application/serviceorganization/report/DisplayReportServlet, method: getMonthData signature: (IILjava/util/Collection;Ljava/util/Collection;Ljava/util/HashMap;Ljava/util/Collection;Ljava/util/Locale;Lorg/apache/struts/util/MessageRe˜̴MtÌ´MÚw€mçw€mp:”MŒŒ at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357) at java.lang.Class.getConstructor0(Class.java:2671) 当启动部署了servlet的jboss服务器时,会发生这种情况。它是用jdk-1.5.0_11编译的,我尝试用jdk-1.5.0_15重新编译它而没有成功。编译运行正常,但是在部署时会发生java.lang.VerifyError。 当我更改方法名称并收到以下错误时: java.lang.VerifyError: (class: be/post/ehr/wfm/application/serviceorganization/report/DisplayReportServlet, method: getMD signature: (IILjava/util/Collection;Lj ava/util/Collection;Ljava/util/HashMap;Ljava/util/Collection;Ljava/util/Locale;Lorg/apache/struts/util/MessageResources┬á├ÿ├àN|├ÿ├àN├Üw┬Çm├ºw┬ÇmX#├ûM|X├öM at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357 at java.lang.Class.getConstructor0(Class.java:2671) at java.lang.Class.newInstance0(Class.java:321) at java.lang.Class.newInstance(Class.java:303) 您可以看到显示了更多的方法签名。 实际的方法签名是 private PgasePdfTable getMonthData(int month, int year, Collection dayTypes, Collection calendarDays, HashMap …

3
在Python中发出警告而不会中断程序
我正在尝试在Python中引发警告,而不会导致程序崩溃/停止/中断。 我使用以下简单函数检查用户是否向其传递了非零数字。如果是这样,程序应警告它们,但按正常方式继续。它应该像下面的代码一样工作,但是应该使用class Warning(),Error()或者Exception()代替手动打印警告。 def is_zero(i): if i != 0: print "OK" else: print "WARNING: the input is 0!" return i 如果我使用下面的代码并将0传递给该函数,则程序将崩溃,并且永远不会返回该值。相反,我希望程序继续正常运行,只是通知用户他已将0传递给该函数。 def is_zero(i): if i != 0: print "OK" else: raise Warning("the input is 0!") return i 我希望能够测试通过unittest对其进行了警告的警告。如果仅将消息打印出来,则无法在unittest中使用assertRaises对其进行测试。

25
Android,ListView IllegalStateException:“适配器的内容已更改,但ListView没有收到通知”
我想做的是:运行后台线程,该线程计算ListView的内容并部分更新ListView,同时计算结果。 我必须避免的是:我无法弄乱后台线程中的ListAdapter内容,因此我继承了AsyncTask并从onProgressUpdate发布结果(向适配器添加条目)。我的适配器使用结果对象的ArrayList,对这些arraylist的所有操作均已同步。 其他人的研究:有非常有价值的数据在这里。对于大约500个用户的组,我几乎每天都遭受崩溃,当我list.setVisibility(GONE)/trackList.setVisibility(VISIBLE)在onProgressUpdate中添加块时,崩溃降低了10倍,但没有消失。(有人在回答中建议) 我有时得到的结果:请注意,这种情况很少发生(3.5k用户之一一周一次)。但我想完全摆脱这个错误。这是部分堆栈跟踪: `java.lang.IllegalStateException:` The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131296334, class android.widget.ListView) with Adapter(class com.transportoid.Tracks.TrackListAdapter)] at android.widget.ListView.layoutChildren(ListView.java:1432) at android.widget.AbsListView.onTouchEvent(AbsListView.java:2062) …

4
带有自定义Android适配器的ArrayIndexOutOfBoundsException,用于ListView中的多个视图
我试图为我的ListView创建自定义适配器,因为列表中的每个项目都可以具有不同的视图(链接,切换或单选组),但是当我尝试运行使用ListView的Activity时收到错误消息,并且该应用程序停止。该应用程序针对Android 1.6平台。 代码: public class MenuListAdapter extends BaseAdapter { private static final String LOG_KEY = MenuListAdapter.class.getSimpleName(); protected List<MenuItem> list; protected Context ctx; protected LayoutInflater inflater; public MenuListAdapter(Context context, List<MenuItem> objects) { this.list = objects; this.ctx = context; this.inflater = (LayoutInflater)this.ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) …

4
如何处理AccessViolationException
我正在从.net应用程序中使用COM对象(MODI)。我正在调用的方法将引发System.AccessViolationException,它会被Visual Studio拦截。奇怪的是,我将调用包裹在一个try捕获中,该捕获具有用于AccessViolationException,COMException和其他所有内容的处理程序,但是当Visual Studio(2010)拦截AccessViolationException时,调试器会中断方法调用(doc.OCR),如果我单步执行,它将继续到下一行而不是进入catch块。此外,如果我在Visual Studio之外运行此程序,则应用程序将崩溃。如何处理在COM对象中引发的异常? MODI.Document doc = new MODI.Document(); try { doc.Create(sFileName); try { doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false); sText = doc.Images[0].Layout.Text; } catch (System.AccessViolationException ex) { //MODI seems to get access violations for some reason, but is still able to return the OCR text. sText = doc.Images[0].Layout.Text; } catch (System.Runtime.InteropServices.COMException ex) …
183 c#  .net  exception  com  modi 

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.