마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

IllegalArgumentException 이 상황에서 정확히 무슨 의미인지 알 수 있을까요? 그리고 어떻게 정의하면 되는지 알려주시면 감사하겠습니다.

0 추천
 val alarmType = intent?.getSerializableExtra("alarmType") as? AlarmType ?: throw IllegalArgumentException("AlaramType이 정의되어 있지 않습니다.")
if (..) {
    this.mediaPlayer = MediaPlayer.create(this , alarmType.rawId)
    this.mediaPlayer.start()}
fun startAlarmService(alarmType: AlarmService.AlarmType) {
    val intent = Intent(this, AlarmService::class.java)
    intent.putExtra("alarmType" , alarmType)
    startService(intent)
}
에러는 이렇게 뜹니다 Caused by: java.lang.IllegalArgumentException: AlaramType이 정의되어 있지 않습니다.
이상황에서 원인이 뭔지 감이 잘 안잡힙니다. AlarmType을 정의한다면 어떤 식으로 해야 하는지 알려주실 수 있나요? 뭔가 당연 한 것들만 질문하는 것 같네요. 항상 감사합니다! 
100만 다운로드 (290 포인트) 님이 2022년 6월 20일 질문

1개의 답변

0 추천
IllegalArgumentException은 다음 세 단어로 구성되어 있습니다.
Illegal 불법적인
Arguement 인자
Exception 예외

문자 그대로 해석하면, 오면 안되는 인자를 넘겼을 때 발생하는 예외입니다.

님의 경우는  Intent에 AlramType 을 넘기지 않았거나 넘긴 데이터가 AlramType이 아니거나 할 때 강제로 IllegalArgumentException을 발생하게 하고 있습니다. startService에 브레이크포인트를 찍어서 Intent에 데이터를 잘 넘기고 있는지 체크하세요.
spark (227,470 포인트) 님이 2022년 6월 20일 답변
spark님이 2022년 6월 20일 수정
IllegalArgumentException혹시 여기서 문제가 발생할 수도 있나요?
...