Tag: 线程exception

最佳实践:定位更改期间的AsyncTask

AsyncTask在另一个线程中运行复杂的任务是一件好事。 但是,当AsyncTask仍在运行时,如果有方向更改或其他configuration更改,则当前的Activity被销毁并重新启动。 而AsyncTask的实例连接到该活动,它失败,并导致“强制closures”消息窗口。 所以,我正在寻找某种“最佳实践”来避免这些错误,并防止AsyncTask失败。 我目前看到的是: 禁用方向更改(当然不是你应该处理的方式)。 让任务生存并通过onRetainNonConfigurationInstance通过新的活动实例进行onRetainNonConfigurationInstance 只要在Activity被销毁时取消任务,并在Activity重新创build时重新启动它。 将任务绑定到应用程序类而不是活动实例。 在“货架”项目中使用的一些方法(通过onRestoreInstanceState) 一些代码示例: 屏幕旋转期间的Android AsyncTasks,第I 部分和第II部分 ShelvesActivity.java 你能帮我find最好的解决问题的办法,并且容易实施吗? 代码本身也很重要,因为我不知道如何正确解决这个问题。

在Python中使用try-except-else是一个好习惯吗?

不时在Python,我看到块: try: try_this(whatever) except SomeException as exception: #Handle exception else: return something try-except-else存在的原因是什么? 我不喜欢这种编程,因为它使用exception来执行stream量控制。 但是,如果它被包含在语言中,那么一定有一个很好的理由,不是吗? 我的理解是,exception不是错误 ,只能用于例外条件(例如,我试图写入文件到磁盘,没有更多的空间,或者我没有权限),而不是stream控制。 通常我会处理exception: something = some_default_value try: something = try_this(whatever) except SomeException as exception: #Handle exception finally: return something 或者如果我真的不想在exception发生时返回任何东西,那么: try: something = try_this(whatever) return something except SomeException as exception: #Handle exception

C ++:通过零错误捕获除法

这是一个简单的一段代码,其中除零发生。 我试图抓住它: #include <iostream> int main(int argc, char *argv[]) { int Dividend = 10; int Divisor = 0; try { std::cout << Dividend / Divisor; } catch(…) { std::cout << "Error."; } return 0; } 但无论如何,应用程序崩溃(即使我把选项-fexceptions MinGW )。 是否有可能捕捉到这样的exception(我知道这不是一个C ++exception,而是一个FPUexception)? 我知道我可以在分割之前检查除数,但是我做了这样的假设,因为除零(很less在我的应用程序中)是很less见的,所以尝试分割(并捕获错误if它发生)比每次除数之前testing除数。 我正在WindowsXP计算机上进行这些testing,但希望使其跨平台。

我可以在同一个catch子句中捕获多个Javaexception吗?

在Java中,我想要做这样的事情: try { … } catch (IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException e) { someCode(); } …代替: try { … } catch (IllegalArgumentException e) { someCode(); } catch (SecurityException e) { someCode(); } catch (IllegalAccessException e) { someCode(); } catch (NoSuchFieldException e) { someCode(); } 有没有办法做到这一点?

如何在不停止程序的情况下打印完整的回溯?

我正在编写一个程序,分析10个网站,查找数据文件,保存文件,然后parsing它们,使数据在NumPy库中很容易使用。 这个文件通过错误的链接,糟糕的XML,缺less的条目以及其他我尚未分类的东西遇到了大量的错误。 我最初做这个程序来处理这样的错误: try: do_stuff() except: pass 但是现在我想logging错误: try: do_stuff() except Exception, err: print Exception, err 注意这是打印到一个日志文件供以后检查。 这通常打印非常无用的数据。 我想要的是打印完全相同的行打印错误触发时没有try-except拦截exception,但我不希望它停止我的程序,因为它嵌套在一系列for循环,我想看完成。

如何使用try catch进行exception处理是最佳实践

在维护我的同事代码的同时,即使是自称是高级开发人员的代码,我也会经常看到以下代码: try { //do something } catch { //Do nothing } 或者有时他们将日志logging信息写入日志文件,如下面的try catch块 try { //do some work } catch(Exception exception) { WriteException2LogFile(exception); } 我只是想知道他们做了什么是最好的做法? 这让我感到困惑,因为我认为用户应该知道系统会发生什么。 请给我一些build议。

令人费解的Enumerable.Cast InvalidCastException

以下将引发一个InvalidCastException 。 IEnumerable<int> list = new List<int>() { 1 }; IEnumerable<long> castedList = list.Cast<long>(); Console.WriteLine(castedList.First()); 为什么? 我正在使用Visual Studio 2008 SP1。

更好地“尝试”一些东西,并捕捉exception或testing是否可能首先避免exception?

我应该testing一下是否有效,或只是try去做,并捕获exception? 有没有可靠的文件说有一种方法是优先的? 是一种更pythonic ? 例如,我应该: if len(my_list) >= 4: x = my_list[3] else: x = 'NO_ABC' 要么: try: x = my_list[3] except IndexError: x = 'NO_ABC' 有些想法… PEP 20说: 错误不应该默默通过。 除非明确沉默。 应该使用一个try而不是一个if被解释为一个错误地传递的错误? 如果是这样,你是否明确地使用这种方式来消除它,因此,它可以吗? 我不是指只能做1件事情的情况; 例如: try: import foo except ImportError: import baz

ASP.NET自定义错误页面 – Server.GetLastError()为空

我有一个自定义的错误页面为我的应用程序设置: <customErrors mode="On" defaultRedirect="~/errors/GeneralError.aspx" /> 在Global.asax,Application_Error(),下面的代码工作来获取exception详细信息: Exception ex = Server.GetLastError(); if (ex != null) { if (ex.GetBaseException() != null) ex = ex.GetBaseException(); } 当我到达我的错误页面(〜/ errors / GeneralError.aspx.cs)时,Server.GetLastError()为null 有没有什么办法可以在错误页面上获取exception详细信息,而不是在Global.asax.cs中? Vista / IIS7上的ASP.NET 3.5

检测堆栈粉碎

我正在执行我的a.out文件。 执行后程序运行一段时间,然后退出消息: **** stack smashing detected ***: ./a.out terminated* *======= Backtrace: =========* */lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)Aborted* 可能的原因是什么?如何纠正?