제어문은 프로그램의 실행 흐름을 제어하는 구문이다.
if~else, for, while, do~while, break, continue, switch~case 등이 있는데,
대부분 비슷하며 조금 다른 부분에 대해서 알아보자!
for 반복문에서의 in 연산자
for문은 다들 알듯이, 어떤 구문을 반복해서 실행할 때 이용되며 반복해서 실행할 조건을 '초기화; 조건; 증감' 형태로 작성한다.
for(var i=0; i<list.length; i++)
위와 같은 형태를 in 연산자를 사용하면 간소화시킬 수 있다. for문에 범위 연산자인 in을 사용하면 오른쪽에 명시한 컬렉션 타입의 데이터 개수만큼 반복해서 실행한다.
for(var i in list)
switch~case 선택문
switch~case 구문은 if~else 구문과 같이 조건에 따라 실행 흐름을 분기할 때 많이 사용한다. 다트에서는 switch의 조건을 정수나 문자열 타입으로 지정할 수 있다. 또한, case가 여러 개라면, 맨 마지막 case문을 제외하고는 break, continue, return, throw 중 하나를 작성해야한다.
많이들 아는 것처럼, 아래처럼 작성하면 오류가 발생한다.
prac(p){
switch(p){
case 'a':
print('a');
case 'b':
print('b');
}
}
아래 코드를 보며 차이점을 한번 보길 바란다!
prac(p){
switch(p){
case 'a':
print('a');
break;
case 'b':
print('b');
}
}
예외 처리문
예외 처리문은 '런 타임 오류'를 제어하는 구문이다. 다트도 다른 언어와 비슷하다.
예외를 던지는 throw문
특정 시점에 예외를 발생시키고 싶다면 throw문을 이용한다. throw 오른쪽에는 객체를 작성한다.
throw Exception('prac');
throw 'prac';
당연히 Exception 클래스 외에 다른 객체를 던져도 된다. 위의 두 번째 코드처럼 문자열을 던져도 된다.
try~on~finally 예외 처리
try~on~finally 구문은 예외 처리 조합이다. try문에 작성한 코드에서 예외가 발생하면 on문이 실행되고, finally문은 예외와 상관없이 무조건 실행되는 코드이다.
만일 예외 처리문에서 어떤 예외가 발생했는지 알고 싶다면 catch문으로 예외 객체를 받으면 된다.