运行时异常表示合同损坏(如NPE),如果代码没有错误,则永远不应抛出.它始终指示代码中的错误(与断言相同,但断言用于内部类错误,而运行时用于类的客户端错误).
永远不应该捕获运行时异常.
另一方面,已检查的异常是签名的一部分,应该进行捕获和处理.它们可能表示用户输入错误或外部资源问题(如IOException
).
有了这一切,我无法理解为什么NumberFormatException
是运行时?
我们使用jspx作为模板引擎.我们有数十个具有数百个el表达式的屏幕,例如$ {user.firstName}或"$ {mail.subject}"
默认情况下,所有这些HTML代码都不会被转义.如果在字段中存在<或"的东西 - 屏幕将失败.我们总是可以使用fn:escapeXml,但在所有地方这样做真的很无聊.
1)默认情况下是否有办法逃脱?
我知道的唯一方法是破解JSP编译器(如tomcat的jasper).但这不是一条路.
2)为什么某人可能需要在el中使用未转义的HTML?在模板外部存储HTML(例如在数据库中)不是一个好习惯.
3)我确信模板引擎应该自动处理它(就像在XSLT中一样),用户为什么要关心它?手动转义(fn:escapeXml)闻起来像SQL手动转义(用于代替JDBC setParam):样板代码和sql注入的好地方(在我们的例子中是跨站点脚本).
这是简单的模式: [key]: [value1] [value2] [value3] [valueN]
我想得到:
这是我的正则表达式: ^([^:]+):(:? ([^ ]+))++$
这是我的文字: foo: a b c d
Matcher
给了我两组:( foo
作为关键)和d
(作为值).
如果我使用+?
而不是++
我得到a
,不是d
.
所以java返回第一个(或最后一个)组的出现.
我不能find()
在这里使用因为只有一场比赛.
除了将正则表达式分成两部分并使用find作为值数组之外,我该怎么办?我在许多其他环境中使用正则表达式,几乎所有环境都能够获取"第一次出现第1组","第二次出现第1组"等等.
如何java.util.regex
在JDK6中使用?
谢谢.