当模式将异常与case语句匹配时,是否有更简单的方法将同一异常与一组异常类型匹配?而不是这个:
} catch {
case e if e.isInstanceOf[MappingException] || e.isInstanceOf[ParseException] =>
Run Code Online (Sandbox Code Playgroud)
像这样的东西会很好:
case e: MappingException | ParseException | SomeOtherException =>
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
我一直在尝试使用SBT和Scala IDE(Eclipse),我想知道 - 在build.sbt文件中添加和删除依赖项的标准工作流程是什么,其中项目的引用库将在Eclipse中更新?
在添加/删除依赖项时,是否有任何使用sbt和eclipse所需的插件?
如何处理let使用相同finally块的语句的绑定或主体中可能发生的异常?例如:
(let [connections (create-connections)]
(dostuff)
(close connections))
Run Code Online (Sandbox Code Playgroud)
如果(create-connections)或(dostuff)失败,我想(close connections).一些选择:
选项1:
(try
(let [connections (create-connections)]
(dostuff))
(finally (close connections))
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,因为connections不在finally块的范围内.
选项2:
(let [connections (create-connections)]
(try
(dostuff)
(finally (close connections)))
Run Code Online (Sandbox Code Playgroud)
此选项仅捕获(destuff)调用中发生的异常,而不是捕获的异常(create-connections).
选项3:
(let [connections (try
(create-connections)
(finally (close connections)))]
(try
(dostuff)
(finally (close connections)))
Run Code Online (Sandbox Code Playgroud)
这也不起作用,因为connections它不在let绑定中的finally语句的范围内.
那么解决这个问题的最佳方法是什么?
有许多Scala库可以将任意对象转换为JSON,还有一些将JSON转换为XML,但我似乎无法找到将任意对象转换为XML的好方法.什么是好方法?
有没有办法编写单个查询来检查一组行是否与一组值匹配?我需要匹配每组值一行,并且我想知道所有行是否匹配.我可以通过多个查询执行此操作,例如:
select * from tableName where (value1, value2) = ('someValue1', 'someValue2')
select * from tableName where (value1, value2) = ('someOtherValue1', 'someOtherValue2')
Run Code Online (Sandbox Code Playgroud)
......等等,最多可以查询任意数量的查询.如果所有值都匹配,那么如何将这种事情重写为单个查询,其中查询仅返回?
我有一个LazySeq连接,在实现时创建.如果在尝试创建连接时发生异常,我想迭代已经在LazySeq中实现的所有连接并关闭它们.就像是:
(try
(dorun connections)
(catch ConnectException (close-connections connections)))
Run Code Online (Sandbox Code Playgroud)
虽然这close-connections会尝试再次实现连接,但这并不常用.我只想关闭已实现的连接,而不是实现其他连接.这样做的任何想法?
有没有办法一般性地获得Scala类型的清单?例如,如果我只有一个Class引用可以使用,有没有办法可以获得相应的清单?