Movatterモバイル変換


[0]ホーム

URL:


Scala 3
3.7.4
LearnInstallPlaygroundFind A LibraryCommunityBlog
Scala 3
LearnInstallPlaygroundFind A LibraryCommunityBlog
DocsAPI
Generated with
Copyright (c) 2002-2025, LAMP/EPFL
Copyright (c) 2002-2025, LAMP/EPFL
Scala 3/scala/scala.util/scala.util.control/Exception

Exception

scala.util.control.Exception
objectException

Classes representing the components of exception handling.

Each class is independently composable.

This class differs fromscala.util.Try in that it focuses on composing exception handlers rather than composing behavior. All behavior should be composed first and fed to aCatch object using one of theopt,either orwithTry methods. Taken together the classes provide a DSL for composing catch and finally behaviors.

Examples

Create aCatch which handles specified exceptions.

import scala.util.control.Exception._import java.net._val s = "https://www.scala-lang.org/"// Some(https://www.scala-lang.org/)val x1: Option[URL] = catching(classOf[MalformedURLException]) opt new URL(s)// Right(https://www.scala-lang.org/)val x2: Either[Throwable,URL] =  catching(classOf[MalformedURLException], classOf[NullPointerException]) either new URL(s)// Success(https://www.scala-lang.org/)val x3: Try[URL] = catching(classOf[MalformedURLException], classOf[NullPointerException]) withTry new URL(s)val defaultUrl = new URL("http://example.com")//  URL(http://example.com) because htt/xx throws MalformedURLExceptionval x4: URL = failAsValue(classOf[MalformedURLException])(defaultUrl)(new URL("htt/xx"))

Create aCatch which logs exceptions usinghandling andby.

def log(t: Throwable): Unit = t.printStackTraceval withThrowableLogging: Catch[Unit] = handling(classOf[MalformedURLException]) by (log)def printUrl(url: String) : Unit = {  val con = new URL(url) openConnection()  val source = scala.io.Source.fromInputStream(con.getInputStream())  source.getLines().foreach(println)}val badUrl = "htt/xx"// Prints stacktrace,//   java.net.MalformedURLException: no protocol: htt/xx//     at java.net.URL.<init>(URL.java:586)withThrowableLogging { printUrl(badUrl) }val goodUrl = "https://www.scala-lang.org/"// Prints page content,//   &lt;!DOCTYPE html&gt;//   &lt;html&gt;withThrowableLogging { printUrl(goodUrl) }

Useunwrapping to create aCatch that unwraps exceptions before rethrowing.

class AppException(cause: Throwable) extends RuntimeException(cause)val unwrappingCatch: Catch[Nothing] = unwrapping(classOf[AppException])def calcResult: Int = throw new AppException(new NullPointerException)// Throws NPE not AppException,//   java.lang.NullPointerException//     at .calcResult(&lt;console&gt;:17)val result = unwrappingCatch(calcResult)

UsefailAsValue to provide a default when a specified exception is caught.

val inputDefaulting: Catch[Int] = failAsValue(classOf[NumberFormatException])(0)val candidatePick = "seven" // scala.io.StdIn.readLine()// Int = 0val pick = inputDefaulting(candidatePick.toInt)

Compose multipleCatchs withor to build aCatch that provides default values varied by exception.

val formatDefaulting: Catch[Int] = failAsValue(classOf[NumberFormatException])(0)val nullDefaulting: Catch[Int] = failAsValue(classOf[NullPointerException])(-1)val otherDefaulting: Catch[Int] = nonFatalCatch withApply(_ => -100)val combinedDefaulting: Catch[Int] = formatDefaulting or nullDefaulting or otherDefaultingdef p(s: String): Int = s.length * s.toInt// Int = 0combinedDefaulting(p("tenty-nine"))// Int = -1combinedDefaulting(p(null: String))// Int = -100combinedDefaulting(throw new IllegalStateException)// Int = 22combinedDefaulting(p("11"))

Attributes

Source
Exception.scala
Graph
Supertypes
classObject
traitMatchable
classAny
Self type

Members list

Grouped members

Catch behavior composition

Build Catch objects from exception lists and catch logic

defcatching[T](exceptions:Class[_]*):Catch[T]

Creates aCatch object which will catch any of the supplied exceptions.

Creates aCatch object which will catch any of the supplied exceptions. Since the returnedCatch object has no specific logic defined and will simply rethrow the exceptions it catches, you will typically want to callopt,either orwithTry on the return value, or assign custom logic by calling "withApply".

Note thatCatch objects automatically rethrowControlExceptions and others which should only be caught in exceptional circumstances. If you really want to catch exactly what you specify, usecatchingPromiscuously instead.

Attributes

Source
Exception.scala
deffailAsValue[T](exceptions:Class[_]*)(value:=>T):Catch[T]

Creates aCatch object which maps all the supplied exceptions to the given value.

Creates aCatch object which maps all the supplied exceptions to the given value.

Attributes

Source
Exception.scala
deffailing[T](exceptions:Class[_]*):Catch[Option[T]]

Creates aCatch object which maps all the supplied exceptions toNone.

Creates aCatch object which maps all the supplied exceptions toNone.

Attributes

Source
Exception.scala
defignoring(exceptions:Class[_]*):Catch[Unit]

Creates aCatch object which catches and ignores any of the supplied exceptions.

Creates aCatch object which catches and ignores any of the supplied exceptions.

Attributes

Source
Exception.scala
defunwrapping[T](exceptions:Class[_]*):Catch[T]

Creates aCatch object which unwraps any of the supplied exceptions.

Creates aCatch object which unwraps any of the supplied exceptions.

Attributes

Source
Exception.scala

Finally behavior composition

Build Catch objects from finally logic

defultimately[T](body:=>Unit):Catch[T]

Returns aCatch object with no catch logic and the argument as the finally logic.

Returns aCatch object with no catch logic and the argument as the finally logic.

Attributes

Source
Exception.scala

General purpose catch objects

Catch objects with predefined behavior. Use combinator methods to compose additional behavior.

finaldefallCatch[T]:Catch[T]

ACatch object which catches everything.

ACatch object which catches everything.

Attributes

Source
Exception.scala

The emptyCatch object.

The emptyCatch object.

Attributes

Source
Exception.scala
finaldefnonFatalCatch[T]:Catch[T]

ACatch object which catches non-fatal exceptions.

ACatch object which catches non-fatal exceptions.

Attributes

Source
Exception.scala

DSL behavior composition

Expressive Catch behavior composition

defhandling[T](exceptions:Class[_]*):By[Throwable=>T,Catch[T]]

Returns a partially constructedCatch object, which you must give an exception handler function as an argument toby.

Returns a partially constructedCatch object, which you must give an exception handler function as an argument toby.

Attributes

Example

handling(classOf[MalformedURLException], classOf[NullPointerException]) by (_.printStackTrace)
Source
Exception.scala

Promiscuous Catch behaviors

Useful if catchingControlThrowable orInterruptedException is required.

defcatchingPromiscuously[T](exceptions:Class[_]*):Catch[T]

Creates aCatch object which will catch any of the supplied exceptions.

Creates aCatch object which will catch any of the supplied exceptions. Unlike "catching" which filters out those in shouldRethrow, this one will catch whatever you ask of it includingControlThrowable orInterruptedException.

Attributes

Source
Exception.scala

Logic Containers

Containers for catch and finally behavior.

classCatch[+T](valpf:Catcher[T],valfin:Option[Finally] = ...,valrethrow:Throwable=>Boolean = ...) extendsDescribed

A container class for catch/finally logic.

A container class for catch/finally logic.

Pass a different value for rethrow if you want to probably unwisely allow catching control exceptions and other throwables which the rest of the world may expect to get through.

Type parameters

T

result type of bodies used in try and catch blocks

Value parameters

fin

Finally logic which if defined will be invoked after catch logic

pf

Partial function used when applying catch logic to determine result value

rethrow

Predicate on throwables determining when to rethrow a caughtThrowable

Attributes

Source
Exception.scala
Supertypes
traitDescribed
classObject
traitMatchable
classAny
classFinally extendsDescribed

A container class for finally code.

A container class for finally code.

Attributes

Source
Exception.scala
Supertypes
traitDescribed
classObject
traitMatchable
classAny

Type members

Classlikes

classBy[T,R](f:T=>R)

Attributes

Source
Exception.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
Exception.scala
Supertypes
classObject
traitMatchable
classAny
Known subtypes
classCatch[T]
classFinally

Types

Attributes

Source
Exception.scala

Value members

Concrete methods

finaldefallCatcher[T]:Catcher[T]

Attributes

Source
Exception.scala
defcatching[T](c:Catcher[T]):Catch[T]

Attributes

Source
Exception.scala

Attributes

Source
Exception.scala
defmkCatcher[Ex <:Throwable :ClassTag,T](isDef:Ex=>Boolean,f:Ex=>T):PartialFunction[Throwable,T]

Attributes

Source
Exception.scala
finaldefnonFatalCatcher[T]:Catcher[T]

Attributes

Source
Exception.scala

!!! Not at all sure of every factor which goes into this, and/or whether we need multiple standard variations.

!!! Not at all sure of every factor which goes into this, and/or whether we need multiple standard variations.

Attributes

Returns

true ifx isControlThrowable orInterruptedException otherwise false.

Source
Exception.scala

Concrete fields

Implicits

Implicits

Attributes

Source
Exception.scala
In this article
Generated with
Copyright (c) 2002-2025, LAMP/EPFL
Copyright (c) 2002-2025, LAMP/EPFL

[8]ページ先頭

©2009-2025 Movatter.jp