2017-10-18 2 views
0

나는 for 루프가 IndexOutOfBoundsException을 기대하고있다. 나는이 특별한 예외를 발생시킬 때, 사용자 정의 예외를 던지기를 원한다. 위의 코드 조각을 실행하면예외를 catch하고 다른 예외를 throw하는 방법

try { 
    for (i <- 0 until end) { 
    // do something 
    } 
} catch { 
    case e: IndexOutOfBoundsException => 
    throw CustomException("Raised expected IndexOutOfBoundsException", e) 
} 

그러나, 컴파일러는 IndexOutOfBoundsException 내 사용자 정의 예외를 제기하고 하지 것을 저에게 말한다 : 나는 현재이 있습니다. 내 맞춤 예외를 발생 시키려면 어떻게해야합니까?

case class CustomException(private val message: String = "", private val cause: Throwable = None.orNull) extends Exception(message, cause) 
+2

컴파일러에서 예외를 게시 할 수 있습니까? 나는 이것을 사용하여'CusomException'을 얻는다. – Shaido

+0

@Shaido 나는 IndexOutOfBounds Exception과 Custom 예외를 얻지 못했다. – franklin

+1

프로그램이 코드의'catch '부분에 들어가는가? 디버깅/인쇄 무언가를 확인하십시오. 내가 생각할 수있는 유일한 것은 대개 'new' 키워드를 사용하여''new CustomException'을 던져 버리는 것입니다. 그러나 나는 그것이 중요하다고 생각하지 않습니다. – Shaido

답변

0

사용 TryrecoverWith :

사용자 정의 예외

는 다음과 같이 정의된다. recoverWith은 실패 사례를 처리하고 새로운 Try 계산의 성공 또는 실패를 전파하려고합니다.

Try { 
    for (i <- 0 until end) { 
    // do something 
    } 
}.recoverWith { case e: IndexOutOfBoundsException => 
Try.failed(CustomException("Raised expected IndexOutOfBoundsException", e)) 
} 
관련 문제