프로그램을 설계할 때 실행시에 예외 상황이 발생 할 가능성이 있는 것을 예측하여, 사전에 예외 처리가 되도록 구현해야 한다.
이름 | syntax error | runtime error | logic error |
---|---|---|---|
원인 | 코드의 형식적 오류 | 실행 중에 예상외의 사태가 발생하여 동작 중단 | 기술한 처리 내용에 논리적인 오류가 존재 |
확인방법 | 컴파일 시 에러 | 실행 시 강제 종료 | 실행 시 예상외의 값을 도출 |
해결방법 | 컴파일 에러를 확인한 후 수정 | 에러 | 원인을 스스로 찾아서 해결 |
try {
// 에러 도출 가능성이 있는 코드 작성
} catch(e) {
// 에러가 발생할 때 구현할 코드 작성
// e : 에러의 정보를 담고 있는 객체
// switch문이나 if-else문을 이용해서 에러별 처리 코드를 작성할 수 있다
}
void main() {
try {
someError(); // 1. someError 메소드 실행
} catch (e) {
print(e); // 3. FormatException: '에러가 발생했다' 출력
}
}
void someError() {
throw FormatException('에러가 발생했다'); // 2. 강제로 FormatException 예외 발생
}
try {
someError();
} on FormatException {
print('FormatException이 발생했습니다');
}
try-catch문에서 같이 사용 가능하며, 에외 상관없이 무조건 실행되는 코드이다
try {
// 에러 발생 가능성 있는 코드
} catch(e) {
// 에러 처리 코드
} finally{
// 무조건 실행되는 코드
}
Dart 내 File 클래스를 통해 다양한 조작이 가능하다. 반드시 dart:io를 import 해야한다
File file = File('경로');
file.writeAsStringSync('내용')
file.writeAsStringSync('내용', mode: FileMode.append)
file.readAsStringSync()
시스템에서 구문 분석할 수 있는 방식으로 데이터를 저장하고 교환하기 위한 텍스트 기반 형식
{
"이름": "홍길동",
"나이": 30,
"성별": "남",
"특기": ["농구", "축구"],
"가족관계": {"아버지": "홍판서", "어머니": "김미영"}
}
객체를 Json으로 직렬화하는 메소드로서, Map<String, dynamic> 타입으로 반환한다
실제로 서버와 통신할 때에는 jsonEncode() 메서드를 사용해서 파싱해줘야 한다
class User {
String name;
int age;
User({required this.name, required this.age});
Map<String, dynamic> toJson() {
return {"name": name, "age": age};
}
}
Json을 객체로 역직렬화하는 메소드이다
서버에서 받아온 json 파일을 사용할 때에는 jsonDecode() 메서드로 파싱해줘야 한다
class User {
String name;
int age;
User({required this.name, required this.age});
User.fromJson(Map<String, dynamic> json)
: name = json['name'], age = json['age'];
}