Tag: exception

如何从未经检查的exception中恢复?

如果您想以相同的方式处理每个故障,例如通过记录它并跳到下一个请求,向用户显示消息并处理下一个事件等,如果这是我的用例,那么所有我都可以使用未经检查的exception。要做的是在我的系统中捕获一些高级别的常规exception类型,并以相同的方式处理所有内容。 但我希望从特定问题中恢复,而且我不确定使用未经检查的exception来处理它的最佳方法。 这是一个具体的例子。 假设我有一个使用Struts2和Hibernate构建的Web应用程序。 如果exception冒泡到我的“动作”,我会记录它,并向用户显示一个非常道歉。 但我的Web应用程序的一个function是创建新的用户帐户,这需要一个唯一的用户名。 如果用户选择已存在的名称,Hibernate会在我的系统内容中抛出org.hibernate.exception.ConstraintViolationException (未经检查的exception)。 我真的想通过要求用户选择另一个用户名来恢复这个特定问题,而不是给他们相同的“我们记录了你的问题,但现在你已经被软化了”的消息。 以下是需要考虑的几点: 有很多人同时创建帐户。 我不想在“SELECT”之间锁定整个用户表以查看名称是否存在,如果不存在则锁定“INSERT”。 在关系数据库的情况下,可能有一些技巧可以解决这个问题,但我真正感兴趣的是一般情况下,由于基本的竞争条件,预先检查exception将不起作用。 同样的事情可能适用于在文件系统上查找文件等。 鉴于我的首席技术官倾向于通过读取“Inc.”中的技术专栏引起的偷渡管理,我需要在持久性机制周围留下一层间接,以便我可以抛弃Hibernate并使用Kodo或其他任何东西,而不会改变任何东西,除了最低持久性代码层。 事实上,我的系统中有几个这样的抽象层。 尽管有未经检查的例外,我怎样才能防止它们泄漏? 已检查exception的一个已声明的弱点是必须在堆栈的每个调用中“处理”它们 – 或者通过声明调用方法抛出它们,或者通过捕获它们并处理它们。 处理它们通常意味着将它们包装在另一个适合抽象级别的类型的检查exception中。 因此,例如,在checked-exception UserNotFoundException ,我的UserRegistry的基于文件系统的实现可能捕获IOException ,而数据库实现将捕获SQLException ,但两者都会抛出隐藏底层实现的UserNotFoundException 。 如何利用未经检查的exception,免除每层的包装负担,而不泄漏实现细节?

Thymeleaf:如何在使用Thymeleaf的JavaScript中使用布尔运算符

我在使用th:inline=”javascript” javascript中使用thymeleaf,但是当我们在java脚本中添加布尔条件时,thymeleaf会出现如下exception: org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 22; The entity name must immediately follow the ‘&’ in the entity reference. com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441) com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436) com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(XMLDocumentFragmentScannerImpl.java:1845) ……………………….. 以下是我的javascript代码: $(document).ready(function(){ $(‘.fancybox’).fancybox({ ‘width’ :’623px’, ‘maxHeight’:’156px’ }); var catId = $(“#category”).val(); if(catId != null && catId != ”){ findSubCategories(); /**/ debugger; if(subCatId != null){ $(“#subCategory”).val(subCatId); } } }); …………………………. […]

Java Jackson:反序列化复杂的多态对象模型:JsonMappingException:意外的令牌(START_OBJECT),预期的VALUE_STRING

我有这种物体树 一个 B延伸A. C延伸B D延伸B E延伸C. F扩展A并且对A有一个引用 A具有以下注释 @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS,include=JsonTypeInfo.As.PROPERTY,property=”@class”) 如果我尝试反序列化扩展A的JSON对象数组,则会引发以下错误 org.codehaus.jackson.map.JsonMappingException:意外的标记(START_OBJECT),预期的VALUE_STRING:需要包含类型id的JSON字符串(对于java.util.Collection的子类型) json字符串由set的toString()方法生成,该set参数化为A类,其中A在JSON中序列化,代码如下: ObjectMapper objectMapper=new ObjectMapper(); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS); String res=””; try { res = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(t); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return res; 反序列化json数组的代码(即上面描述的集合)是: ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS); Collection results=null; try { […]

如何在Clojure中捕获多个exception?

我的Clojure代码有一些java-interop,它有一个抛出多个exception的方法。 我希望与他们中的每个人打交道。 根据Clojure文档: (try expr* catch-clause* finally-clause?) catch-clause -> (catch classname name expr*) 它没有提到捕捉多个例外。 是否有可能在Clojure中这样做? 谢谢!

Mac OS无法打开TopCoder Arena

我正在使用最新版本的Java运行Mac OX 10.7.4。 我想访问TopCoder的竞技场,所以我下载了.jnlp并尝试打开它。 但是,我一直收到一个错误,说应用程序是未签名的。 我附上了错误的屏幕截图及其详细信息。 有谁知道如何解决这一问题?

是不是在try块中捕获的未经检查的exception在Java中检查了exception?

有人告诉我,在Java中,未经检查的exception可以在try块中捕获,但如果它被捕获,是不是称为已检查exception?

文件存在时具有所有权限的FileNotFoundException

我正在尝试读取文件,我得到的错误是 java.io.FileNotFoundException: /homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations/gameTheoryAgentConfiguration.properties (No such file or directory) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(FileInputStream.java:106) at game.player.gametheoryagent.GameTheoryAgent.(GameTheoryAgent.java:67) at simulation.Simulator.createPlayer(Simulator.java:141) at simulation.Simulator.main(Simulator.java:64) 但是文件确实存在,只是为了仔细检查我给它777权限,如下所示: tui% cd /homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations tui% ls -al total 4 drwxrwxrwx 3 at1106 cs4 1024 2010-02-22 17:45 . drwxrwxrwx 4 at1106 cs4 1024 2010-02-22 17:27 .. -rwxrwxrwx 1 at1106 cs4 260 2010-02-22 17:31 gameTheoryAgentConfiguration.properties drwxrwxrwx 6 at1106 […]

java.net.URISyntaxException

我有这个例外。 但这个例外不再重现。 我想得到这个原因 Exception Caught while Checking tag in XMLjava.net.URISyntaxException: Illegal character in opaque part at index 2: C:\Documents and Settings\All Users\.SF\config\sd.xml stacktrace net.sf.saxon.trans.XPathException. 为什么发生这种exception。 如何处理,所以它不会重现。

在exception被捕获错设计后返回null

我总是遇到同样的问题,当在具有非void返回值的函数中捕获exception时,我不知道要返回什么。 以下代码段说明了我的问题。 public Object getObject(){ try{ … return object; } catch(Exception e){ //I have to return something here but what?? return null; // is this a bad design?? } } 所以我的问题是: 返回null设计不好吗? 如果是这样,什么被视为更清洁的解决方案? 谢谢。

Spring MVC – RequestParamException参数不存在

我的网站最终出现了问题。 它使用AJAX请求从服务器获取数据,该服务器使用Spring MVC 。 ( 间歇性地 )发生的事情是,有时我们会遇到像这样的exception: org.springframework.web.bind.MissingServletRequestParameterException: Required Integer parameter ‘page’ is not present at 这种exception发生在一些AJAX POST调用中(不仅仅适用于这种情况!!)我们仍然无法重现它以了解正在发生的事情。 例如,在其中一种情况下,参数’page’(用于在用户滚动页面时加载内容 – 因此它是必需变量)通过AJAX调用发送,该调用具有带有页面参数的’ data ‘字段从这样的forms: 像这样的ajax调用( $(“#filter”)和url都可以): $.ajax({ type: “POST”, data: $(“#filter”).serialize(), // serializes the form’s elements. url: _ctx + URL_FILTER, cache: false }) 我们重现的唯一方法是将其属性“名称”更改为“ 页面 ”以外的其他内容。 但我想情况并非如此(大多数用户甚至没有打开开发者控制台…) 我已经google了很多,我检查了所有可能性。 借口还可以: (Content-Type: application/x-www-form-urlencoded; charset=UTF-8) 参数还可以,AJAX看起来还不错,一切都好看……但我们找不到发生了什么。 我们已经尝试了很多可能性,但我们仍然无法强制这些例外发生。 我们得到的一个假设是,有时AJAX可能会发送空数据块,而没有任何参数。 但我们甚至不知道它是否真实以及如何检查其真实性。 […]