IT/WEB

java.lang.ArrayIndexOutOfBoundsException: 1 에러 split() NULL 처리, 예외 처리

오달달씨 2021. 11. 15. 20:17
728x90
반응형

input type="text" 같은 이름을 배열로 담아 특정 컬럼에 담았다.

<td>번호1</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호2</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호3</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호4</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호5</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호6</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호7</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호8</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호9</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
<td>번호10</td>
<td><input type="text"  autocomplete="off" name="noti_mdn" maxlength="24" /></td>
function insert() {
	var length = $("input[name='noti_mdn']").length;
	var mdn_array = new Array(length);
	for(var i =0; i<length; i++) {
		mdn_array[i] = $("input[name='noti_mdn']").eq(i).val();
	}
	$("input[name='noti_mdn']").val(mdn_array);
	
	var frm = document.frm;
	frm.method="post";
	frm.action="insert.jsp"
	frm.submit();
}

DB 에 MDN은 01033847189;;;;;;;;; 으로 등록되었다.

같은 방식으로 불러올 때 MDN으로 불러오는 컬럼이 01033847189;;;;;;;;; 이런 형식이 아닌, 01033847189 와 같은 형식이 존재했다. MDN이 01033847189 로만 존재하는 경우 split(";") 함수를 사용하는 경우 에러가 발생했다.

java.lang.ArrayIndexOutOfBoundsException: 1 에러.

가 발생하였는데, 이를 해결하기 위해서 아래처럼 코드를 짰다.(split()이 null이거나. split() 배열 값이 없는 곳에 배열을 생성하는 경우 발생하는 에러)

if(mmsBean.getNoti_sms_mdn() != null) {
	String[] noti_sms_mdn = mmsBean.getNoti_sms_mdn().split(";");
	for(String mdn : noti_sms_mdn) {
		notiSmsMdnList.add(mdn);
	}
	for(int a=0; a<=(10-noti_sms_mdn.length); a++) {
		notiSmsMdnList.add("");
	}
}

java.lang.ArrayIndexOutOfBoundsException에러

배열의 크기를 n이라고 했을 때 배열의 인덱스는 1부터 n까지가 아닌 0부터 n-1까지이다. 해당 에러는 인덱스가 배열의 크기보다 크거나 음수 인덱스일 때 발생한다.

 

JAVA split() 함수로 문자열 자르기

- String[] split(String regex)- String[] split(String regex, int limit)

 

728x90
반응형