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; } 或者会被认为是反模式?
在PoshCode上查看一个Get-WebFile脚本: http ://poshcode.org/3226我注意到了这个奇怪的东西: $URL_Format_Error = [string]"…" Write-Error $URL_Format_Error return 这是什么原因,而不是: $URL_Format_Error = [string]"…" Throw $URL_Format_Error 甚至更好: $URL_Format_Error = New-Object System.FormatException "…" Throw $URL_Format_Error 据我所知,你应该使用写错误的非终止错误,并抛出终止错误,所以在我看来,你不应该使用写错误,然后返回。 有区别吗?
我需要专门捕获SQL Server超时exception,以便可以以不同方式处理它们。 我知道我可以捕获SqlException,然后检查消息string是否包含“超时”,但想知道是否有更好的方法来做到这一点? try { //some code } catch (SqlException ex) { if (ex.Message.Contains("Timeout")) { //handle timeout } else { throw; } }
我目前在我的ASP.NET MVC应用程序中使用log4net来loggingexception。 我这样做的方式是让我所有的控制器都inheritance自一个BaseController类。 在BaseController的OnActionExecuting事件中,我logging了可能发生的任何exception: protected override void OnActionExecuted(ActionExecutedContext filterContext) { // Log any exceptions ILog log = LogManager.GetLogger(filterContext.Controller.GetType()); if (filterContext.Exception != null) { log.Error("Unhandled exception: " + filterContext.Exception.Message + ". Stack trace: " + filterContext.Exception.StackTrace, filterContext.Exception); } } 如果在控制器操作期间发生未处理的exception,这非常有效。 至于404错误,我有我的web.config中设置自定义错误,如下所示: <customErrors mode="On"> <error statusCode="404" redirect="~/page-not-found"/> </customErrors> 而在处理“页面未find”url的控制器操作中,我logging了请求的原始URL: [AcceptVerbs(HttpVerbs.Get)] public ActionResult PageNotFound() { log.Warn("404 page not […]
如何在R中“抛出”一个错误? 我有一个函数,它需要一个数据框和一些列名,并与他们做的东西。 如果列不存在,我希望函数停止并根据它停止所有的function。 我已经看过recover和browse和traceback但是,好吧,他们似乎是接近,但不是我所期待的。
我刚下载并解压缩android SDK for Windows。 我目前正在使用W8 64x。
我正在根据此页面上的Google Analytics分步指南创build一个脚本: https://developers.google.com/analytics/resources/tutorials/hello-analytics-api 授权在没有问题的情况下完成,直到它尝试访问数据。 返回码是403,错误信息是: 用户没有任何Google Analytics帐户 这个消息是没有意义的:我的帐户有谷歌分析数据,跟踪多个网站,我可以从networking浏览器访问它没有问题。 我已经通过Google API控制台允许Google Analytics(分析)API,并且API访问权限可以为我提供正确的数据。
我正在寻找开始使我的JavaScript更加错误的certificate,并且我发现了大量关于使用try , catch , finally和throw的文档,但是我没有从专家那里得到关于何时何地的大量build议抛出错误。 每一段代码都应该包装在try / catch中吗? 是否有更多的这样的build议在哪个点应该被捕获? 提高错误而不是让代码在生产中默默地失败有缺点吗? 至于实现方面,这已经被触及到,但是服务器日志loggingJS错误是一个有效的策略? 还有什么我应该知道的,关于在我的应用程序陷阱错误? 我也完全听说有很好的章节或对error handling的深入解释的书籍。 雄辩的JavaScript触及了这个问题,但是对这个问题并没有很强的规定性或者自认性。 感谢您的任何build议,你可以给!
在C和C ++中, exit()和abort()什么区别? 我想在发生错误(不是例外)后结束我的程序。
我坚持决定如何处理我的应用程序中的exception。 很多,如果我的exception问题来自1)通过远程服务访问数据或2)反序列化JSON对象。 不幸的是,我不能保证这些任务(切断networking连接,不受我控制的格式错误的JSON对象)的成功。 因此,如果我确实遇到一个exception,我只需在函数中捕获它并返回给调用者的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; } 我认为这种方法没问题,但是我真的很好奇,知道pipe理exception的最佳实践是什么(我真的应该把一个exception从一个调用堆栈中调出来)。 总结关键问题: 可以只捕捉exception,但不要冒泡或正式通知系统(通过日志或通知给用户)? 什么最佳实践是有exception,不会导致所有需要一个try / catch块? 跟进/编辑 感谢所有的反馈意见,在线查找exceptionpipe理的一些优秀资源: exception处理的最佳实践| O'Reilly媒体 .NET中的exception处理最佳实践 […]