예외(Exceptions)처리 & null-aware operator

장윤찬·2021년 12월 10일
0

dart language

목록 보기
9/12
post-thumbnail

예외처리

https://dart.dev/guides/language/language-tour#exceptions
flutter를 통해 앱을 만들때, 굳이 예외처리를 해야될까?
하지않아도 예외발생시 런타임에러가 뜨며 예외를 찾아서 고칠 수 있다.
하지만 에러가 발생하면, 앱이 충돌(crash)하며 에뮬레이터나 유저의 모바일화면이 깨지고 만다. 예외처리를 통해 특정 키워드로 작업을 지정해주면, 예외 발생시에 지정한 작업을 수행하기 때문에 충돌이 발생하지 않는다.

try/on/catch, throw

try

예외가 발생할 수도 있는 코드를 try절의 바디{} 안에 작성한다.

try {
// 코드
}

on

예외클래스의 타입을 지정해줄때 사용한다. 즉, 내가 지정한 예외클래스가 발생할 시에만 예외처리를 수행한다.

try {
// 코드
} on 예외클래스 {
// 예외처리코드
}

예외처리코드는 예외클래스 발생시에 수행된다.

catch

예외객체가 필요할때, 사용한다.

try {
// 코드
} catch(e){
// 예외처리코드
}

catch문의 입력값에 주어진 e 는 예외객체인것이다. 예외발생시에 예외처리코드가 수행된다.

on 예외클래스 catch

on을 통해 예외클래스 타입을 지정하고 catch(e)를 통해 예외객체 사용이 가능하다.

try {
// 코드
} on 예외클래스 catch(e) {
// 예외처리코드
}

throw

throw를 통해 원하는 상황에서 예외를 지정할 수 있다.

divide(int a, int b) {
if (b == 0) {
  throw new 예외클래스지정();
  }
  return a / b;
}

즉, divide메소드 사용시에 매개변수 b가 0이라면, 지정한 예외클래스의 예외가 발생하게 된다.

  • ex

null-aware operator(null 인식 연산자)

변수가 null 값을 갖는경우 예외가 발생하는 경우가 많다.
null 인식연산자를 통해 null 값을 편하게 처리할 수 있다.

??= (할당연산자)

변수가 null인 경우에만 지정한 값을 할당하는 연산자이다.

var a=1;
a ??=0; // a가 널값을 가지는 경우 0대입
print(a);
// 변수 a 가 널값이 아니므로 그대로 1 출력

?? (null 인식 연산자)

변수가 null인경우 변수에 값이 할당되어 표현식을 수행한다.

var b = null;
var a = b ?? 3; // b가 널값을 가지므로 b에 3이 할당되어 a는 3을 가짐.
print(a)
// 3 출력
profile
Flutter 학습 일기

0개의 댓글