개발을 하다보면 try-catch를 이용해 에러를 잡곤 한다.
그러나 try-catch만으로는 부족하다.
try {
int result = await DatabaseHelper.instance.insertItem(newItem);
if (result > 0) {
_showSuccessDialog();
} else {
_showFailDialog();
}
} catch (e) {
print("에러 발생: $e");
_showFailDialog();
}
데이터베이스에 newItem을 넣는 과정을 챗GPT 시켜서 짜게 했는데 이런 코드를 주었다.
어차피 try-catch에서 에러를 잡을텐데 왜 굳이 result > 0을 확인하는지 궁금해졌다.
이유를 물어보니 다음과 같이 답을 주었다.
✅ if (result > 0) 체크가 필요한 이유
1. 예외가 발생하지 않아도 실패할 수 있음
예를 들어, INSERT 문이 실행됐지만 데이터베이스에 아무것도 추가되지 않을 가능성이 있어.
2. insert() 메서드는 실패 시 0을 반환할 수 있기 때문에 확인이 필요함.
성공과 실패를 명확하게 구분 가능
✅ 결론
try-catch는 에러가 발생한 경우를 처리하는 거고,
if (result > 0)는 정상적으로 실행됐지만 기대한 결과가 나왔는지 확인하는 용도임.
🚀 즉, 예외가 발생하지 않았더라도 삽입이 성공적으로 이루어졌는지 확인하려면 if (result > 0)를 추가하는 게 안전함!
오호... 에러 없이 데이터 삽입을 실패할 수도 있다는 경우를 생각 못했다.
에러 핸들링은 잘 해두면 나쁠게 없기에... 지식+1 된 기분이다.
'Dart & Flutter' 카테고리의 다른 글
flutter로 캘린더 만들기 (0) | 2021.12.25 |
---|---|
플러터 apk로 만드는 법 (0) | 2021.07.14 |
Flutter? (0) | 2021.07.12 |