에러 헨들링
· 4 min read
📚 오늘의 학습 내용
오늘의 코딩
정렬된 배열에서 중복 제거
class Solution {
int removeDuplicates(List<int> nums) {
if(nums.isEmpty){return 0;}
int k = 1;
for(int i = 1; i < nums.length ; i++){
if(nums[i] != nums[k-1]){
nums[k] = nums[i];
k++;
}
}
return k;
}
}
문제점
- 숫자 배열에서 조건에 숫자가 뒤로 갈수록 감소하지 않는다는 것을 파악하지 못함
- 중복되는 것을 제거해서 ‘_’로 바꿔야 한다는 것을 잘못 이해해서 헛고생을 조금 했다. 매번 문제를 잘 이해하지 못하는 부분이 있는 것 같다.
- 예외와 오류의 차이
- 예외는 프로그래밍 로직 문제, 오류는 주로 시스템 문제(메모리 부족)
✍️ 주요 학습 내용
배운 내용
- 예외 클래스
- 오류 클래스
- 예외와 오류의 차이
- 예외처리
새로 알게된 개념
예외
FormatException
- 다른 형태의 데이터가 들어갔을 때 예외 발생
IOException
- 입출력 관련 오류
OSError
- 운영체제 관련 에러
TimoutException
- 비동기 처리시 시간이 오버할 때 나오는 에러
throw
→ 의도적으로 예외를 던지는 것.
예외에 사용하는 키워드
try
의 코드 블록 중에 예외가 발생하면 try
의 코드 블록에 있는 뒷 코드들은 실행되지 않음 → catch
문으로 넘어감
catch (e)
e → 예외객체가 매개변수로 들어옴
on
- 단독으로 쓸 수 없음
- 특정 타입의 예외를 다룸
try{
}on FormatException catch(e){}
finally
- 예외 발생 여부에 상관없이 실행할 코드를 넣는 부분
try{
}catch(e){
}finally{
print('예외 처리 끝!')
}
오류(Error)
- 오류를 발생하면 프로그램이 종료됨
AssertionError
assert(조건문)
가false
면 오류 발생
RangeError
- 리스트 길이보다 더 큰 인덱스를 사용할 때
RangeError
를 상속받은IndexError
를 발생
OutOfMemoryError
- 메모리 부족
StackOverflowError
- 메모리 영역 중 하나인 스택 영역이 가능한 범위를 넘어가는 현상
- 스택은 지역 변수나 매개변수를 담는 공간
StateError
- 객체가 현재 상태로는 특정 동작이 불가능할 때
- ex)
null.first()
UnimplementedError
- 정의되지 않은 메서드나 기능을 호출했을 때
UnsupportedError
- 호출은 하는데 동작은 하지 않음
실습한 내용
- 없음
🚨 발생한 문제/에러
- 없음
📝 코드 스니펫
// 오늘 배운 주요 코드
try{
}catch(e){
}finally{
}
📚 내일 학습할 내용
- 종합반 강의 복습
💭 오늘의 회고
잘한 점 👍
- 목표를 끝까지 지키려고 한 점
개선할 점 🔨
- 완벽한 상태에서 과제를 하려고 하기보다 미리 시작하고 과제를 먼저 파악하는 게 중요한 것 같음
배운 점 💡
- 예외를 예측하는 게 쉽지 않은 것 같음
✏️ 참고 자료
- Flutter 공식 문서: https://docs.flutter.dev