1. 버그
프로그램이나 앱에서 발생하는 오류 또는 문제를 의미한다
버그는 의도치 않은 동작이나 예상치 못한 결과를 초래할 수 있다
버그의 원인은 다양할 수 있는데 오타, 부정확한 논리, 잘못된 변수 사용, 메모리 관리 오류 등이 일반적이다
프로그램이 다양한 상황에서 정확하게 동작하도록 모든 가능성을 고려하는 것은 어렵기 때문에 발생할 수 있다
버그 종류와 수정에대해 좀더 정리해봤다
a. 컴파일 에러
- 코드를 컴파일할 때 발생하는 오류, 문법오류나 잘못된 변수 사용에 해당된다
- 이런 에러는 프로그램이 실행되기 전에 발견해서 수정할 필요가 있다
b. 런타임 에러
- 프로그램 실행 중에 발생하는 오류로, 예상치 못한 상황에서 발생하는 경우가 많다
- 0으로 나누기, 배열 범위를 넘어가는 등의 상황이 해당된다
c. 논리적 에러
- 문법적으로 올바르나 프로그램이 의도한 대로 동작하지 않는 경우
- 잘못된 조건문이나 부정확한 계산이 해당된다
버그는 테스트 과정에서 발견되기도 하지만 사용자가 프로그램을 사용하면서 발견되기도 한다
버그는 예상치 못한 결과를 초래할 수 있어서 프로그램의 신뢰성을 저하시키기 때문에 테스트와 디버깅 도구를 사용하여
코드를 검사하고 버그를 추적하고 수정하는 일련의 과정들이 필요하다
큰 규모의 소프트웨어에서는 버그의 수정이 중요하며 안정성과 성능을 유지하는데 큰 역할을한다
프로그래머에 의한 에러 프로그래머의 실수
에러 응용프로그램 사용자에의해서
2. 에러
프로그램이 실행 중에 발생한 문제로 버그와 동일한 에러 종류가 있으나 논리적 에러의 경우
런타임 에러의 하위범주에 해당할 수 있다
논리적 에러로 인해 프로그램이 실행 중에 예외 상황이 발생할 수 있다
예를들어, 잘못된 조건문이나 부정확한 계산이 논리적 에러의 예시일 수 있다
그래서 논리적 에러는 주로 버그로 간주되며 프로그램의 예상치 못한 동작이나 오류를 나타내는데 사용된다
버그와 비슷한 맥락에서 에러라는 단어가 사용되지만 버그는 프로그램이 예상치 못한 동작을 하는 상황을 이반적으로 의미하며
에러는 실행 중에 발생하는 문제 전반을 나타낸다
에러가 발생하면 프로그램은 종료되거나 예외가 발생하여 처리된다
프로그래머는 예외처리를 통해 프로그램이 예측 가능하게 동작하도록 만들 수 있다
3. 예외처리
프로그램 실행 중에 예상치 못한 상황(예외)이 발생할 때 이를 처리하는 방법을 말한다
프로그램이 비정상적으로 종료되는것을 방지할 수 있다
a. 검사 예외
- 컴파일러가 강제로 처리를 요구하는 예외로, 주로 외부 자원과의 상호 작용 시 발생한다
- 예를 들어 파일 입출력, 네트워크 통신 등이 해당된다
b. 비검사 예외
- 명시적인 예외처리가 강제되지 않는 예외를 말한다
- 주로 프로그램 논리 오류나 프로그래머의 실수로 인한 예외가 해당된다
c. 예외처리의 기본 구조
try {
// 예외가 발생할 수 있는 코드
} catch (exceptionType: Exception) {
// 예외가 발생했을 때 실행되는 코드
} finally {
// 예외 발생 여부와 관계없이 항상 실행되는 코드 (선택적)
}
d. 예외처리 설명
- 'try'블록: 예외가 발생할 수 있는 코드를 감싸는 부분
- 'catch'블록: 예외가 발생했을 때 실행되는 부분으로, 특정 예외 타입에 대한 처리가 이루어짐
- 'finally'블록: 예외 발생 여부와 상관없이 항상 실행되는 부분으로, 리소스 해제 등의 작업에 활용
(예시)
fun divide(a: Int, b: Int): Int {
try {
return a / b
} catch (e: ArithmeticException) {
// 0으로 나누는 예외 처리
println("Error: ${e.message}")
return -1
} finally {
// 항상 실행되는 코드 (선택적)
println("Division operation completed.")
}
}
fun main() {
val result = divide(10, 0)
println(result)
}
e. 예외처리의 목적
- 프로그램의 안정성 향상: 예외 상황에 대한 적절한 대응을 통해 프로그램이 비정상적으로 종료되는 상황을 방지
- 디버깅 및 오류 로깅: 예외 메시지를 통해 오류 상황을 기록하고, 디버깅에 도움을 줌
- 사용자 경험 향상: 프로그램이 예외 상황에 대한 적절한 처리를 통해 사용자에게 더욱 친숙한 메시지를 제공할 수 있음
f. 주의사항
- 가능한 구체적인 예외 타입을 처리하는것이 좋다
- 모든 예외를 한꺼번에 처리하는 것은 피하는 것이 좋다
- 'finally'블록은 선택적이며 필요에 따라 사용된다
IT 지식 책 정리 1 (0) | 2024.01.31 |
---|---|
용어 정리 UI, UX, 클라이언트, API (0) | 2024.01.22 |
용어 정리 라이브러리, 프레임워크, 퍼블리싱 (0) | 2024.01.19 |
용어정리 변수와 상수, 메서드, 클래스 (0) | 2024.01.17 |
용어정리 IDE, 컨벤션, 자료형 (0) | 2024.01.16 |