Questions tagged «exception»

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

8
Java / Android-如何打印完整的堆栈跟踪?
在Android(Java)中,如何打印完整的堆栈跟踪记录?如果我的应用程序因nullPointerException或其他原因而崩溃,它将打印出(几乎)完整的堆栈跟踪,如下所示: java.io.IOException: Attempted read from closed stream. com.android.music.sync.common.SoftSyncException: java.io.IOException: Attempted read from closed stream. at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:545) at com.android.music.sync.google.MusicSyncAdapter.fetchDataFromServer(MusicSyncAdapter.java:488) at com.android.music.sync.common.AbstractSyncAdapter.download(AbstractSyncAdapter.java:417) at com.android.music.sync.common.AbstractSyncAdapter.innerPerformSync(AbstractSyncAdapter.java:313) at com.android.music.sync.common.AbstractSyncAdapter.onPerformLoggedSync(AbstractSyncAdapter.java:243) at com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:33) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:164) Caused by: java.io.IOException: Attempted read from closed stream. at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:148) at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159) at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:212) at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81) at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:64) at android.net.http.AndroidHttpClient.getUngzippedContent(AndroidHttpClient.java:218) at com.android.music.sync.api.MusicApiClientImpl.createAndExecuteMethod(MusicApiClientImpl.java:312) …

14
使用断言或异常按合同进行设计?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 通过合同进行编程时,功能或方法首先要检查其先决条件是否已满足,然后再开始执行其职责,对吗?两个最重要的方式做这些检查是通过assert和exception。 assert仅在调试模式下失败。为了确保对所有单独的合同前提条件(单元)进行测试(以查看它们是否确实失败)至关重要。 异常在调试和发布模式下失败。这样的好处是,测试的调试行为与发布行为相同,但是会导致运行时性能下降。 您认为哪一个更可取? 在这里查看相关问题

11
.NET:缺少必需的配置设置时会抛出哪个异常?
这是一个标准方案: if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"])) throw new SomeStandardException("Application not configured correctly, bozo."); 问题是,我不确定 SomeStandardException应该是哪个例外。 我仔细研究了3.5 Framework,发现了两个可能的候选对象: ConfigurationException和ConfigurationErrorsException。 System.Configuration.ConfigurationException 发生配置系统错误时引发的异常。 备注 的 ConfigurationException如果应用程序试图读取或写入数据到配置文件,但不成功则抛出异常。造成这种情况的一些可能原因包括配置文件中的XML格式错误,文件权限问题以及带有无效值的配置属性。 注意: ConfigurationException维护该对象是为了向后兼容。该ConfigurationErrorsException 对象将其替换为配置系统。 实际上,此异常听起来很适合我的需要,但已被标记为过时,因此,ixthay on atthay。 这使我们深感困惑ConfigurationErrorsException: System.Configuration.ConfigurationErrorsException 当前值不是EnableSessionState值之一。 如您所见,其文档完全没有用。(在本地和在线帮助中都是这种方式。)对课程本身的检查表明,这对于我想要的内容来说是过分的杀伤力。 简而言之,我需要在应用程序配置设置丢失或包含无效值时引发的标准异常。您可能认为框架中有这样的异常供应用程序使用。(它确实做到了,但已被标记为过时,并被很多东西所取代。范围较大。) 你们使用什么解决方案(如果有的话),我是否将不得不吸收它并为此提出自己的例外? 编辑附录 有人问我是否可以提供默认值,然后继续。在某些情况下,是的,在这些情况下,不会引发异常。但是,对于某些设置,这将不适用。例如:数据库服务器名称和凭据,身份验证服务器以及已安装的第三方应用程序的路径。 还值得注意的是,我主要处理的应用程序是以批处理模式运行的控制台应用程序,并且我希望它引发一个异常,该异常会被main方法捕获并在未正确配置的情况下正确记录。(这是我继承的旧版代码,目前仅假设所有内容都是桃花心的。)

14
我应该在C ++中使用异常说明符吗?
在C ++中,可以通过使用异常说明符来指定一个函数可以抛出异常,也可以不抛出异常。例如: void foo() throw(); // guaranteed not to throw an exception void bar() throw(int); // may throw an exception of type int void baz() throw(...); // may throw an exception of some unspecified type 由于以下原因,我对实际使用它们表示怀疑: 编译器实际上并没有以任何严格的方式强制执行异常说明符,因此好处并不大。理想情况下,您希望获得一个编译错误。 如果函数违反异常说明符,我认为标准行为是终止程序。 在VS.Net中,它将throw(X)视为throw(...),因此对标准的遵循性不强。 您认为应该使用异常说明符吗? 请回答“是”或“否”,并提供一些理由来证明您的回答合理。

15
JavaScriptSerializer期间ASP.NET MVC中的MaxJsonLength异常
在我的控制器动作之一中,我将返回一个非常大的值JsonResult以填充网格。 我收到以下InvalidOperationException异常: 使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了在maxJsonLength属性上设置的值。 不幸的是,将中的maxJsonLength属性设置web.config为较高的值不会显示任何效果。 <system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="2147483644"/> </webServices> </scripting> </system.web.extensions> 我不想像这个 SO答案中提到的那样将其作为字符串传递回来。 在我的研究中,我偶然发现了此博客文章,建议您编写自己的文章ActionResult(例如LargeJsonResult : JsonResult)以绕过此行为。 这是唯一的解决方案吗? 这是ASP.NET MVC中的错误吗? 我想念什么吗? 非常感激任何的帮助。

6
如何导入Django DidNotExist异常?
我正在尝试创建一个UnitTest来验证对象已被删除。 from django.utils import unittest def test_z_Kallie_can_delete_discussion_response(self): ...snip... self._driver.get("http://localhost:8000/questions/3/want-a-discussion") self.assertRaises(Answer.DoesNotExist, Answer.objects.get(body__exact = '<p>User can reply to discussion.</p>')) 我不断收到错误: DoesNotExist: Answer matching query does not exist.

5
如何获取在Python中捕获的异常的名称?
如何获得在Python中引发的异常的名称? 例如, try: foo = bar except Exception as exception: name_of_exception = ??? assert name_of_exception == 'NameError' print "Failed with exception [%s]" % name_of_exception 例如,我捕获了多个(或所有)异常,并想在错误消息中打印异常的名称。

11
何时使用断言以及何时使用异常
在大多数情况下,我将使用异常检查代码中的条件,我想知道何时才是使用断言的适当时间? 例如, Group group=null; try{ group = service().getGroup("abc"); }catch(Exception e){ //I dont log error because I know whenever error occur mean group not found } if(group !=null) { //do something } 您能指出断言如何适合这里吗?我应该使用断言吗? 似乎我从不在生产代码中使用断言,而仅在单元测试中看到断言。我确实知道,在大多数情况下,我可以像上面那样使用异常来进行检查,但是我想知道“专业”地执行异常的适当方法。


6
如何处理列表推导中的异常?
我在Python中有一些列表理解,其中每次迭代都可能引发异常。 例如,如果我有: eggs = (1,3,0,3,2) [1/egg for egg in eggs] 我将ZeroDivisionError在第3个元素中得到一个例外。 如何处理此异常并继续执行列表理解? 我能想到的唯一方法是使用辅助函数: def spam(egg): try: return 1/egg except ZeroDivisionError: # handle division by zero error # leave empty for now pass 但这对我来说有点麻烦。 有没有更好的方法在Python中执行此操作? 注意: 这是我做的一个简单示例(请参阅上面的“ 例如 ”),因为我的实际示例需要一些上下文。我对避免除以零错误不感兴趣,但对处理列表理解中的异常不感兴趣。

19
Azure表存储返回400错误请求
我在调试模式下运行了该程序,并附加了带有异常详细信息的映像。我怎么知道出了什么问题?我试图插入表中的数据。天蓝色不能给我更多细节吗? 观察:该存储位于Windows Azure而非我的计算机上。表已创建,但是在插入数据时出现此错误 // Retrieve the storage account from the connection string. Microsoft.WindowsAzure.Storage.CloudStorageAccount storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=***;AccountKey=***"); // Create the table client. CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); // Create the table if it doesn't exist. CloudTable table = tableClient.GetTableReference("EmployeeOnlineHistory"); table.CreateIfNotExists(); 这是插入代码: public static void SetStatus(Employee e, bool value) { try { // …

19
空检查链与捕获NullPointerException
Web服务返回巨大的XML,我需要访问它的深层嵌套字段。例如: return wsObject.getFoo().getBar().getBaz().getInt() 问题是getFoo(),getBar(),getBaz()可能所有的回报null。 但是,如果我null在所有情况下都进行检查,则代码将变得非常冗长且难以阅读。此外,我可能会错过某些领域的检查。 if (wsObject.getFoo() == null) return -1; if (wsObject.getFoo().getBar() == null) return -1; // maybe also do something with wsObject.getFoo().getBar() if (wsObject.getFoo().getBar().getBaz() == null) return -1; return wsObject.getFoo().getBar().getBaz().getInt(); 可以写吗 try { return wsObject.getFoo().getBar().getBaz().getInt(); } catch (NullPointerException ignored) { return -1; } 或将其视为反模式?

15
Java或C#中异常管理的最佳实践
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 改善这个问题 我一直在决定如何处理应用程序中的异常。 如果我的异常问题很大程度上来自于1)通过远程服务访问数据或2)反序列化JSON对象。不幸的是,我不能保证其中任何一项都能成功(切断网络连接,无法控制的畸形JSON对象)。 结果,如果确实遇到异常,我将在函数中捕获该异常并将FALSE返回给调用方。我的逻辑是,调用者真正关心的只是任务是否成功,而不是为什么任务没有成功。 这是典型方法的一些示例代码(在JAVA中) public boolean doSomething(Object p_somthingToDoOn) { boolean result = false; try{ // if dirty object then clean doactualStuffOnObject(p_jsonObject); //assume success (no exception thrown) result = true; } catch(Exception Ex) { //don't care about exceptions Ex.printStackTrace(); } return result; } 我认为这种方法很好,但是我真的很想知道管理异常的最佳实践是什么(我真的应该一直在调用堆栈中冒泡一个异常吗?)。 关键问题总结: 可以只捕获异常但不将其冒泡或正式通知系统(通过日志或向用户的通知)可以吗? 有什么最佳实践可以解决并非导致所有内容都需要try …

10
尝试/捕获与引发异常
这些代码语句是否等效?它们之间有什么区别吗? private void calculateArea() throws Exception { ....do something } private void calculateArea() { try { ....do something } catch (Exception e) { showException(e); } }
117 java  exception 

4
重新抛出原始异常时的C ++异常问题
捕获中的以下append()是否会导致重新抛出的异常,以查看被调用append()的效果? try { mayThrowMyErr(); } catch (myErr &err) { err.append("Add to my message here"); throw; // Does the rethrow exception reflect the call to append()? } 同样,如果我用这种方式重写它,如果实际异常是由myErr派生的,会发生位切片吗? try { mayThrowObjectDerivedFromMyErr(); } catch (myErr &err) { err.append("Add to my message's base class here"); throw err; // Do I lose the derived …
117 c++  exception  rethrow 

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.