Take the 2-minute tour ×

Experimenting with Scala... I'm trying to define something analogous to the "@" hack in PHP (which means, ignore any exception in the following statement).

I managed to get a definition that works:

    def ignoreException(f: () => Unit) = {
      try {
      catch {
        case e: Exception => println("exception ignored: " + e);

And use it like this:

ignoreException( () => { someExceptionThrowingCodeHere() } );

Now here is my question... Is there anyway I can simplify the usage and get rid of the () =>, and maybe even the brackets?

Ultimately I'd like the usage to be something like this:

`@` { someExceptionThrowingCodeHere(); }
share|improve this question
add comment

2 Answers

up vote 10 down vote accepted

@ is reserved in Scala (for pattern matching), but would you accept @@?

scala> def @@(block: => Unit): Unit = try {
} catch {
  case e => printf("Exception ignored: %s%n", e)
$at$at: (=> Unit)Unit

scala> @@ {
  println("before exception")
  throw new RuntimeException()
  println("after exception")
before exception
Exception ignored: java.lang.RuntimeException

I'm not convinced this is a good idea, however ☺

share|improve this answer
add comment

You don't have to use a function as your parameter, a "by-name" parameter will do:

def ignoreException(f: =>Unit) = {
  try {
  catch {



share|improve this answer
Note the the calling code could be written in the same style that Alex R showed as a usage example: ignoreException { blah(); blah() } –  Mitch Blevins Oct 30 '09 at 2:27
add comment

Your Answer


