本文整理汇总了Scala中scala.util.control.Exception.ultimately类的典型用法代码示例。如果您正苦于以下问题:Scala ultimately类的具体用法?Scala ultimately怎么用?Scala ultimately使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ultimately类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: TraceableExecutionContext
//设置package包名称以及导入依赖的类
package cores.traceable.internal
import java.util.Map
import org.slf4j.MDC
import scala.concurrent.{ExecutionContext, ExecutionContextExecutor}
import scala.util.control.Exception.{Catch, ultimately}
private[internal] final class TraceableExecutionContext(mdcContext: Map[String, String], delegate: ExecutionContext) extends ExecutionContextExecutor {
def execute(runnable: Runnable): Unit = delegate.execute(new Runnable {
def run() {
val oldMDCContext = MDC.getCopyOfContextMap
setContextMap(mdcContext)
withResetContext(oldMDCContext) {
runnable.run()
}
}
})
private[this] def setContextMap(context: Map[String, String]) {
Option(context) match {
case Some(c) => MDC.setContextMap(c)
case None => MDC.clear()
}
}
private def withResetContext(context: Map[String, String]): Catch[Unit] = {
ultimately[Unit] {
setContextMap(context)
}
}
def reportFailure(t: Throwable): Unit = delegate.reportFailure(t)
}
示例2: ExecutionStart
//设置package包名称以及导入依赖的类
package cores.task.internal
import cores.internal.constant.MdcKey
import cores.internal.request.RequestId
import org.slf4j.MDC
import play.api.{Application, Logger, Play}
import scala.util.control.Exception.{Catch, ultimately}
import scala.util.{Failure, Success, Try}
private[task] object ExecutionStart {
private val startTime: Long = System.currentTimeMillis()
def start(execution: Execution): Unit = {
val app: Application = startApplication()
withCleanup(app) {
executeQuietly(execution, app)
}
}
private def executeQuietly(execution: Execution, app: Application): Unit = {
Try(execution.execute(app)) match {
case Success(_) => Logger.info(s"${execution.getClass.getSimpleName} is success.")
case Failure(e) => Logger.error(s"${execution.getClass.getSimpleName} is error!", e)
}
}
private def startApplication(): Application = {
MDC.put(MdcKey.RequestId, RequestId.initialize().value)
Logger.info("Starting application.")
ApplicationInitializer.initialize()
}
private def withCleanup(app: Application): Catch[Unit] = {
ultimately[Unit] {
Play.stop(app)
val endTime: Float = (System.currentTimeMillis() - startTime) / 1000f
Logger.info(s"Stopping application, total time: ${"%.1f".format(endTime)} s.")
MDC.remove(MdcKey.RequestId)
}
}
}
示例3: load
//设置package包名称以及导入依赖的类
package cores.test.fixture
import scala.io.Source
import scala.util.control.Exception.ultimately
def load(path: String): String = {
val source = Source.fromInputStream(getClass.getResourceAsStream(path))
withFinally(source: Source) {
source.mkString
}
}
private def withFinally(source: Source) = {
ultimately {
source.close()
}
}
}
示例4: ExecutionStartSpec
//设置package包名称以及导入依赖的类
package cores.task.internal
import cores.task.Task
import org.scalatestplus.play.PlaySpec
import play.api.{Application, Logger}
import scala.util.control.Exception.{Catch, ultimately}
class ExecutionStartSpec extends PlaySpec {
"ExecutionStart#start" should {
"?????????" in {
noException mustBe thrownBy {
ExecutionStart.start(TestTask)
}
}
}
private object TestTask extends Task {
override def execute(app: Application): Unit = {
Logger.trace("test")
}
override protected def withExit: Catch[Unit] = ultimately[Unit]{}
}
}