반응형
1. java.lang.NullPointerException
- 설명: 이 에러는 null 값을 참조하려고 할 때 발생합니다. 예를 들어, 객체가 null임에도 불구하고 그 객체의 메서드를 호출하거나 필드에 접근하려 할 때 이 에러가 발생합니다.
- 해결 방법: null 검사를 통해 객체가 null이 아님을 보장한 후에 해당 객체를 사용해야 합니다. 예를 들어, if (object != null) { object.method(); }와 같이 검사할 수 있습니다.
2. java.lang.ClassCastException
- 설명: 이 에러는 객체를 잘못된 타입으로 캐스팅하려고 할 때 발생합니다. 예를 들어, 부모 클래스를 자식 클래스로 캐스팅하려 할 때 타입이 일치하지 않으면 발생합니다.
- 해결 방법: 캐스팅하기 전에 instanceof 키워드를 사용하여 객체가 기대한 타입인지 확인해야 합니다. 또한, 클래스 간의 관계를 명확히 이해하는 것이 중요합니다.
3. java.lang.OutOfMemoryError
- 설명: 애플리케이션이 사용할 수 있는 메모리를 모두 소진했을 때 발생하는 에러입니다. 특히, 큰 이미지나 대용량 데이터를 다룰 때 자주 발생합니다.
- 해결 방법: 큰 이미지를 처리할 때는 크기를 줄이거나, Bitmap을 효율적으로 사용해야 합니다. RecyclerView나 ListView와 같은 뷰를 사용할 때는 객체 재사용을 통해 메모리 사용량을 줄일 수 있습니다.
4. java.lang.ArrayIndexOutOfBoundsException
- 설명: 배열의 인덱스가 배열의 길이를 초과하거나 음수일 때 발생하는 에러입니다. 예를 들어, 배열의 길이가 5인데 인덱스 5에 접근하려 하면 이 에러가 발생합니다.
- 해결 방법: 배열의 크기와 인덱스가 유효한지 항상 확인하고, for 루프를 사용할 때 인덱스 범위를 잘못 설정하지 않도록 주의해야 합니다.
5. java.lang.IllegalArgumentException
- 설명: 메서드에 전달된 인수가 유효하지 않을 때 발생하는 에러입니다. 예를 들어, 숫자를 기대하는 메서드에 문자를 전달하면 이 에러가 발생할 수 있습니다.
- 해결 방법: 메서드 호출 전에 전달할 인수가 메서드가 기대하는 형식이나 범위에 맞는지 확인해야 합니다. 필요한 경우 예외 처리를 추가하여 안전성을 강화할 수 있습니다.
6. android.os.NetworkOnMainThreadException
- 설명: 메인 스레드에서 네트워크 작업을 수행하려 할 때 발생하는 에러입니다. Android는 메인 스레드에서 긴 작업을 수행하면 UI가 멈출 수 있기 때문에 이 에러를 발생시킵니다.
- 해결 방법: 네트워크 작업은 AsyncTask, Thread, 또는 Coroutine 등을 사용하여 백그라운드 스레드에서 처리해야 합니다. 또한, OkHttp와 같은 네트워크 라이브러리를 사용해 작업을 쉽게 관리할 수 있습니다.
7. android.content.res.Resources$NotFoundException
- 설명: 리소스 파일(예: 이미지, 문자열)을 찾을 수 없을 때 발생하는 에러입니다. 잘못된 리소스 ID를 사용하거나, 리소스가 프로젝트에 포함되지 않았을 때 발생합니다.
- 해결 방법: 리소스가 올바르게 프로젝트에 포함되었는지 확인하고, 사용하고자 하는 리소스의 ID가 올바른지 점검해야 합니다.
8. android.content.ActivityNotFoundException
- 설명: 인텐트를 사용하여 시작하려는 Activity가 AndroidManifest에 선언되어 있지 않거나, 해당 Activity가 존재하지 않을 때 발생하는 에러입니다.
- 해결 방법: 해당 Activity가 매니페스트 파일에 올바르게 선언되어 있는지 확인하고, 인텐트를 생성할 때 정확한 클래스 이름을 사용해야 합니다.
9. java.lang.StackOverflowError
- 설명: 메서드 호출이 너무 깊어지면서 스택 메모리가 초과될 때 발생하는 에러입니다. 특히 재귀 함수가 종료 조건 없이 무한히 호출될 때 발생할 수 있습니다.
- 해결 방법: 재귀 호출이 올바르게 종료되도록 논리를 수정하거나, 반복문으로 대체할 수 있는지 검토해야 합니다.
10. java.lang.SecurityException
- 설명: 애플리케이션이 필요한 권한을 갖지 않고 보안 관련 작업(예: 파일 접근, 카메라 사용 등)을 시도할 때 발생하는 에러입니다.
- 해결 방법: 필요한 권한을 AndroidManifest에 선언하고, 런타임 권한 요청을 통해 사용자의 허가를 받아야 합니다. 예를 들어, Manifest.permission.CAMERA 권한을 요청할 수 있습니다.
11. android.view.WindowManager$BadTokenException
- 설명: 잘못된 윈도우 토큰을 사용하여 Dialog를 표시하려 할 때 발생하는 에러입니다. 예를 들어, Activity가 종료된 후 Dialog를 표시하려 할 때 발생할 수 있습니다.
- 해결 방법: Activity가 살아 있는지 확인한 후 Dialog를 표시하고, onPause()와 같은 생명 주기 메서드에서 다이얼로그를 안전하게 해제해야 합니다.
12. android.database.sqlite.SQLiteException
- 설명: SQL 문법 오류 또는 데이터베이스 관련 문제가 있을 때 발생하는 에러입니다. 잘못된 SQL 쿼리 또는 데이터베이스 접근 시도에서 발생할 수 있습니다.
- 해결 방법: SQL 쿼리를 작성할 때 올바른 문법을 사용하고, 데이터베이스 열기, 닫기 등의 작업이 올바르게 수행되었는지 확인해야 합니다.
13. android.app.Fragment$InstantiationException
- 설명: Fragment를 인스턴스화하려고 할 때 발생하는 에러로, 기본 생성자가 없는 경우 또는 Fragment 클래스에 접근할 수 없는 경우 발생합니다.
- 해결 방법: Fragment에 기본 생성자를 추가하고, newInstance() 메서드를 사용하여 안전하게 Fragment를 생성하는 방법을 고려해야 합니다.
14. android.view.InflateException
- 설명: XML 레이아웃 파일을 인플레이트하는 동안 오류가 발생할 때 발생하는 에러입니다. 잘못된 XML 구문 또는 리소스 참조가 원인이 될 수 있습니다.
- 해결 방법: XML 파일이 올바른지 확인하고, 사용된 리소스가 실제로 존재하는지 점검해야 합니다.
15. java.lang.IllegalStateException
- 설명: 객체의 상태가 메서드 호출에 적합하지 않을 때 발생하는 에러입니다. 예를 들어, Activity의 생명 주기에서 잘못된 상태에 있을 때 UI 변경을 시도하면 발생할 수 있습니다.
- 해결 방법: 메서드를 호출하기 전에 객체의 상태가 올바른지 확인하고, 생명 주기 메서드(예: onCreate, onResume)를 올바르게 사용해야 합니다.
16. android.view.ViewRootImpl$CalledFromWrongThreadException
- 설명: UI 스레드가 아닌 다른 스레드에서 UI 요소에 접근하려 할 때 발생하는 에러입니다.
- 해결 방법: UI 작업은 항상 메인 스레드에서 수행해야 하며, 다른 스레드에서 UI를 변경하려면 Handler나 runOnUiThread()를 사용해야 합니다.
17. java.lang.IllegalAccessException
- 설명: 클래스나 메서드에 접근할 권한이 없을 때 발생하는 에러입니다. 예를 들어, 접근 수준이 private인 메서드를 외부에서 호출하려 할 때 발생합니다.
- 해결 방법: 접근하려는 메서드나 필드의 접근 제한자가 올바른지 확인하고, 필요한 경우 접근 수준을 조정해야 합니다.
반응형
'Android' 카테고리의 다른 글
Android 난독화 기법에 대해서 설명하시오. (5) | 2024.09.01 |
---|---|
Kotlin 2.0 업데이트와 Android 관련 주요 사항 (0) | 2024.08.31 |
Android 면접 전 체크할 기본질문 10가지 (0) | 2024.08.17 |
Kotlin 2.0 업데이트 내용을 알고 있나? (0) | 2024.08.15 |
Android 앱 Play 스토어 심사 기준을 알고 있는가? (0) | 2024.08.15 |