답변

16

this answer과 같이 ClassTag을 사용할 수 있습니다.

그러나 나는이 방법을 선호하는 것 : 또한 일반적으로 당신이 recover 방법 Try를 사용한다

import scala.reflect.{ClassTag, classTag} 

def myFunc[A <: Exception: ClassTag](): Unit = { 
    try { 
    println("Hello world") // or something else 
    } catch { 
    case a if classTag[A].runtimeClass.isInstance(a) => 
    } 
} 

참고 :

def myFunc(recover: PartialFunction[Throwable, Unit]): Unit = { 
    try { 
    println("Hello world") // or something else 
    } catch { 
    recover 
    } 
} 

사용법 :

myFunc{ case _: MyException => } 

ClassTag 사용을 : Try는 012 만 잡을 것입니다.예외.

def myFunc(recover: PartialFunction[Throwable, Unit]) = { 
    Try { 
    println("Hello world") // or something else 
    } recover { 
    recover 
    }.get // you could drop .get here to return `Try[Unit]` 
}