-
Notifications
You must be signed in to change notification settings - Fork 62
/
Copy path42_02_error_handling_extension.js
62 lines (54 loc) · 1.27 KB
/
42_02_error_handling_extension.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/**
* ada beberapa macam type Error dijavascript
* yaitu :
*
1. EvalError
2. InternalError
3. RangeError
4. ReferenceError
5. SyntaxError
6. TypeError
7. URIError
semua jenis error diatas kita bisa handle dengan try..catch
*/
/**
* Jika kita mau, kita bisa tambahain type Error sesuai keiinginan
*
* misal kita ingin ada tipe error khsus untuk http request yang gagal
* misal kita namai HttpError
*
* maka tinggal kita inherit aja dari built-in class Error
*/
// ES6
class HttpError extends Error {
constructor(response) {
super();
this.status = response.status;
this.name = 'HttpError';
this.message = `${this.status} ${this.errorText()}`;
}
errorText() {
switch(this.status) {
case 404:
return 'Not found'
break;
case 400:
return 'Bad request';
break;
default:
return 'Internal Server Error';
break;
}
}
}
// testing the class
if (true) { // simulate status !== 200
throw new HttpError({status: 400}); // HttpError: 400 Bad request...
}
// kita bisa juga buat Extension untuk tipe-tipe yang lainnya
class myError extends URIError {
// sama kayak di HttpError
}
class myError extends TypeError {
// sama kayak di HttpError
}