728x90
반응형
Java 자주발생하는 오류 정리 #8
Frequent Java Cleanup Errors #8
NegativeArraySizeException
NegativeArraySizeException은 배열의 크기를 음수로 지정하려고 할 때 발생하는 예외입니다. 배열의 크기는 양수 또는 0이어야 합니다.
취약점
- NegativeArraySizeException은 주로 프로그래밍 오류와 관련이 있으며, 직접적인 보안 취약점을 나타내지는 않습니다. 그러나 음수 크기의 배열을 생성하면 예상치 못한 동작이 발생할 수 있습니다.
오류상황
public class NegativeArraySizeExceptionExample {
public static void main(String[] args) {
int[] array = new int[-1]; // 음수 크기의 배열 생성 시도
}
}
솔루션
public class NegativeArraySizeExceptionSolution {
public static void main(String[] args) {
int size = 10; // 양수 크기로 배열 크기 지정
int[] array = new int[size];
}
}
솔루션 설명
- 배열의 크기를 양수로 지정하여 NegativeArraySizeException을 방지할 수 있습니다.
UnsupportedOperationException
UnsupportedOperationException은 객체가 지원하지 않는 연산을 수행하려고 할 때 발생하는 예외입니다. 주로 컬렉션과 같은 자료 구조에서 발생합니다.
취약점
- UnsupportedOperationException은 주로 프로그래밍 오류와 관련이 있으며, 직접적인 보안 취약점을 나타내지는 않습니다. 그러나 지원되지 않는 연산을 수행하려고 하면 예상치 못한 동작이 발생할 수 있습니다.
오류상황
import java.util.*;
public class UnsupportedOperationExceptionExample {
public static void main(String[] args) {
List<String> unmodifiableList = Collections.unmodifiableList(new ArrayList<>());
unmodifiableList.add("Item"); // 읽기 전용 리스트에 항목 추가 시도
}
}
솔루션
import java.util.*;
public class UnsupportedOperationExceptionSolution {
public static void main(String[] args) {
List<String> modifiableList = new ArrayList<>();
modifiableList.add("Item"); // 수정 가능한 리스트에 항목 추가
}
}
솔루션 설명
- OutOfMemoryError를 완전히 예방하는 것은 어렵지만, 메모리 누수를 방지하고 메모리를 효율적으로 관리하는 코드 작성이 중요합니다. 더 많은 힙 메모리를 할당하거나 더 적은 메모리를 사용하는 방법을 고려할 수도 있습니다.
PatternSyntaxException
PatternSyntaxException은 정규 표현식의 구문 오류가 발생했을 때 발생하는 예외입니다. 정규 표현식이 올바르게 작성되지 않은 경우에 발생합니다.
취약점
- PatternSyntaxException은 주로 프로그래밍 오류와 관련이 있으며, 보안 취약점을 나타내지는 않습니다. 그러나 올바른 정규 표현식을 사용하지 않으면 원하는 패턴 매칭을 얻을 수 없습니다.
오류상황
import java.util.regex.*;
public class PatternSyntaxExceptionExample {
public static void main(String[] args) {
try {
Pattern.compile("*abc"); // 잘못된 정규 표현식 사용 시도
} catch (PatternSyntaxException e) {
e.printStackTrace();
}
}
}
솔루션
import java.util.regex.*;
public class PatternSyntaxExceptionSolution {
public static void main(String[] args) {
try {
Pattern.compile(".*abc"); // 올바른 정규 표현식 사용
} catch (PatternSyntaxException e) {
e.printStackTrace();
}
}
}
솔루션 설명
- 올바른 정규 표현식을 사용하여 PatternSyntaxException을 방지할 수 있습니다.
728x90
반응형