scala> import scala.util.control.Exception.catching
import scala.util.control.Exception.catching
scala> def ?[T](block: => T): Option[T] = catching(classOf[NullPointerException]) opt block match {
| case Some(t) => if (t == null) None else Some(t); case _=> None }
$qmark: [T](block: => T)Option[T]
scala> def lastmethodcall: String = null
lastmethodcall: String
scala> def npe: String = {val s: String = null; s.toString}
npe: String
scala> ?[String](npe)
res27: Option[String] = None
scala> ?[String](lastmethodcall)
res28: Option[String] = None
scala> def yay="foo"
yay: java.lang.String
scala> ?[String](yay)
res29: Option[String] = Some(foo)