1
00:00:00,809 --> 00:00:04,431
[MUSIC]

2
00:00:04,431 --> 00:00:08,086
Giao tiếp giữa khách hàng và máy chủ không bao giờ là một thỏa thuận được thực hiện.

3
00:00:08,086 --> 00:00:10,326
Để diễn giải một câu tục ngữ nổi tiếng,

4
00:00:10,326 --> 00:00:14,168
có rất nhiều sự rung chuyển giữa máy khách và máy chủ.

5
00:00:14,168 --> 00:00:17,226
Vậy làm thế nào để chúng ta đối phó với các lỗi khi chúng phát sinh,

6
00:00:17,226 --> 00:00:21,415
khi chúng ta đang giao tiếp giữa khách hàng và máy chủ?

7
00:00:21,415 --> 00:00:26,008
Hãy nói về điều đó trong bài tập này.

8
00:00:26,008 --> 00:00:29,931
Khi máy chủ tạo ra một phản ứng, hoặc khách hàng HTTP,

9
00:00:29,931 --> 00:00:35,110
trong khi giao tiếp với máy chủ, gặp phải một lỗi và sau đó tạo ra

10
00:00:35,110 --> 00:00:40,390
một phản ứng lỗi, điều này được cung cấp dưới dạng phản ứng lỗi HTTP.

11
00:00:40,390 --> 00:00:43,760
Bây giờ, phản ứng này, chúng tôi muốn có thể xử lý nó và

12
00:00:43,760 --> 00:00:48,840
sau đó biến nó thành một chuỗi thông điệp phản ứng,

13
00:00:48,840 --> 00:00:54,790
có thể được gửi đến khách hàng để khách hàng có thể hiển thị điều này trên màn hình.

14
00:00:54,790 --> 00:00:56,727
Vì vậy, để cho phép chúng tôi để làm điều đó,

15
00:00:56,727 --> 00:01:02,727
chúng tôi sẽ tạo ra một dịch vụ mới có tên là quá trình thông điệp HTTP trong này, đây là thư mục.

16
00:01:02,727 --> 00:01:08,663
Vì vậy, để làm điều đó, tại dấu nhắc gõ ng,

17
00:01:08,663 --> 00:01:15,174
g dịch vụ dịch vụ/Processhttpmsg,

18
00:01:15,174 --> 00:01:22,265
và tạo ra các dịch vụ Processhttpmsg.

19
00:01:22,265 --> 00:01:26,178
Bây giờ, một khi dịch vụ được tạo ra, chúng tôi sẽ tiếp tục và

20
00:01:26,178 --> 00:01:27,921
thêm nó vào mô-đun ứng dụng.

21
00:01:27,921 --> 00:01:36,240
Và sau đó chúng tôi sẽ thêm vào một phương pháp để các dịch vụ Processhttpmsg.

22
00:01:36,240 --> 00:01:40,068
Bây giờ chúng tôi đã tạo ra dịch vụ Processhttpmsg, chúng

23
00:01:40,068 --> 00:01:44,653
ta hãy tiếp tục và sau đó thêm vào tệp app.module.t.

24
00:01:44,653 --> 00:01:52,993
Vì vậy, đi đến các tập tin app.module.t,

25
00:01:52,993 --> 00:02:02,353
cho phép tôi nhập các dịch vụ Processhttpmsg,

26
00:02:06,191 --> 00:02:15,255
Từ '. /services/process-httpmsg.service '.

27
00:02:15,255 --> 00:02:22,945
Vì vậy, một khi được nhập khẩu, sau đó chúng tôi sẽ có thể sử dụng nó trong ứng dụng của chúng tôi.

28
00:02:22,945 --> 00:02:26,463
Vì vậy, chúng ta hãy tiếp tục và thêm điều đó vào các nhà cung cấp của chúng tôi.

29
00:02:26,463 --> 00:02:29,216
Vì vậy, đi vào các nhà cung cấp của chúng

30
00:02:29,216 --> 00:02:34,952
tôi, hãy để tôi thêm vào ProcesshttpmsgService vào các nhà cung cấp.

31
00:02:34,952 --> 00:02:38,429
Điều đầu tiên mà chúng tôi sẽ làm là bao gồm một phương pháp mới

32
00:02:38,429 --> 00:02:41,618
vào ProcesshttpmsgService gọi là xử lý lỗi,

33
00:02:41,618 --> 00:02:45,105
mà sẽ chăm sóc xử lý lỗi khi chúng phát sinh.

34
00:02:45,105 --> 00:02:51,220
Và sau đó chúng tôi sẽ sử dụng chúng trong các dịch vụ mà chúng tôi truy cập vào máy chủ.

35
00:02:51,220 --> 00:02:54,546
Để bắt đầu, chúng ta hãy nhập khẩu đầu tiên,

36
00:02:57,928 --> 00:03:03,969
ThrowError từ, rxjs,

37
00:03:03,969 --> 00:03:09,766
và điều này giúp chúng ta ném lỗi bất cứ khi nào phát sinh.

38
00:03:12,005 --> 00:03:20,787
Và sau đó chúng tôi nhập khẩu HttpErrorResponse từ,

39
00:03:23,316 --> 00:03:28,193
góc độ/common/http.

40
00:03:30,926 --> 00:03:35,632
Sau đó, chúng tôi sẽ bắt đầu thiết kế phương pháp HandleError

41
00:03:35,632 --> 00:03:41,257
, và điều này mất, như một tham số, một lỗi có thể là một phản hồi,

42
00:03:41,257 --> 00:03:45,042
đó là một phản hồi lỗi từ máy chủ,

43
00:03:45,042 --> 00:03:48,746
hoặc bất kỳ lý do nào khác mà lỗi phát sinh.

44
00:03:48,746 --> 00:03:54,095
Vì vậy, trong phương pháp HandleError này, chúng ta phải làm gì?

45
00:03:54,095 --> 00:04:02,195
Hãy cố gắng xây dựng một thông báo tóm tắt những gì các lỗi là tất cả về.

46
00:04:02,195 --> 00:04:06,389
Vì vậy, chúng tôi sẽ bao gồm một biến chuỗi mới ở đây.

47
00:04:07,880 --> 00:04:13,080
Nếu error.error là một thể hiện

48
00:04:13,080 --> 00:04:18,699
của ErrorEvent, vì vậy nếu đây là một sự kiện lỗi xảy ra,

49
00:04:18,699 --> 00:04:24,170
thì error.error.message sẽ chứa thông tin.

50
00:04:24,170 --> 00:04:26,695
Vì vậy, chúng tôi sẽ thiết lập thông báo lỗi để

51
00:04:26,695 --> 00:04:35,630
error.error.message.

52
00:04:35,630 --> 00:04:42,630
Nếu đó không phải là trường hợp, thì điều đó có nghĩa là điều này đến từ phía máy chủ,

53
00:04:42,630 --> 00:04:48,500
và do đó, trong trường hợp đó, thông báo lỗi được xây dựng bằng cách nói bằng dấu ngoặc kép,

54
00:04:48,500 --> 00:04:55,940
lưu ý dấu ngoặc kép ở đây, và sau đó $ {error.status}.

55
00:04:55,940 --> 00:04:59,450
Vì vậy, chúng tôi đang trích xuất thông tin trạng thái từ đó.

56
00:04:59,450 --> 00:05:03,956
Và sau đó, - error.StatusText,

57
00:05:03,956 --> 00:05:07,710
nếu StatusText tồn tại, hoặc

58
00:05:07,710 --> 00:05:12,226
đó sẽ là một chuỗi trống ở đó.

59
00:05:12,226 --> 00:05:17,691
Và sau đó chúng tôi cũng sẽ bao gồm các error.error chính nó,

60
00:05:17,691 --> 00:05:23,866
đối tượng lỗi hoàn chỉnh, ngay trong chuỗi.

61
00:05:23,866 --> 00:05:29,320
Và sau đó sử dụng nó như là thông báo lỗi của chúng tôi.

62
00:05:29,320 --> 00:05:33,484
Bây giờ, một khi chúng tôi có thông báo lỗi,

63
00:05:33,484 --> 00:05:38,169
sau đó chúng tôi sẽ có thể sử dụng ThrowError để

64
00:05:38,169 --> 00:05:43,520
trả về một lỗi quan sát được cho ứng dụng của chúng tôi.

65
00:05:44,940 --> 00:05:48,960
Vì vậy, điều này có nghĩa là đây là ném một lỗi vào thời điểm này,

66
00:05:48,960 --> 00:05:51,370
với thông báo lỗi được bao gồm ở đó.

67
00:05:51,370 --> 00:05:56,549
Vì vậy, chuỗi thông báo lỗi này được xây dựng dựa trên thông tin

68
00:05:56,549 --> 00:06:02,243
mà chúng tôi có được ở đây, hoặc bởi vì phía máy chủ phản hồi với một lỗi hoặc

69
00:06:02,243 --> 00:06:05,111
lỗi có thể là từ các lý do khác.

70
00:06:05,111 --> 00:06:09,606
Vì vậy, trong cả hai trường hợp, chúng tôi sẽ xây dựng một thông báo lỗi và sau đó trả lại nó.

71
00:06:09,606 --> 00:06:12,493
Bây giờ, chúng ta sử dụng lỗi xử lý này ở đâu?

72
00:06:12,493 --> 00:06:17,549
Bây giờ, trong dịch vụ của chúng tôi, ví dụ như các tập tin dishservice.t,

73
00:06:17,549 --> 00:06:22,866
chúng tôi thấy rằng trước đó khi chúng tôi nói HTTP này nhận được, và sau đó chúng tôi chỉ nói bản đồ,

74
00:06:22,866 --> 00:06:28,020
và sau đó giả định rằng các phản ứng luôn luôn là một phản ứng tích cực.

75
00:06:28,020 --> 00:06:31,580
Nhưng giả sử phản ứng của họ không tích cực, và

76
00:06:31,580 --> 00:06:37,330
sau đó nó trả về một lỗi, sau đó chúng ta cần phải bắt lỗi đó.

77
00:06:37,330 --> 00:06:44,180
Để giúp chúng tôi với điều này, chúng tôi nhập khẩu các nhà điều hành CatchError từ rxjs,

78
00:06:44,180 --> 00:06:50,690
và sau đó chúng tôi cũng nhập khẩu các ProcesshttpmsgService

79
00:06:50,690 --> 00:06:56,001
mà chúng tôi vừa tạo ra trước đó vào

80
00:06:56,001 --> 00:07:01,860
dịch vụ món ăn của chúng tôi để chúng tôi có thể sử dụng phương pháp lỗi xử lý từ đó.

81
00:07:01,860 --> 00:07:08,060
Vì vậy, chúng tôi nhập khẩu này từ. /process-httpmsg.service.

82
00:07:08,060 --> 00:07:12,670
Và sau đó, đi xuống trình xây dựng,

83
00:07:12,670 --> 00:07:18,690
bây giờ chúng ta tiêm dịch vụ thông điệp HTTP

84
00:07:18,690 --> 00:07:22,910
vào trình xây dựng, cùng với trình khách HTTP. Để

85
00:07:22,910 --> 00:07:27,080
chúng tôi có thể sử dụng dịch vụ này,

86
00:07:27,080 --> 00:07:32,280
đặc biệt là phương pháp lỗi xử lý của dịch vụ để xử lý các lỗi

87
00:07:32,280 --> 00:07:37,710
được trả về bởi khách hàng HTTP của chúng tôi ở đó.

88
00:07:38,930 --> 00:07:43,009
Bây giờ, một khi chúng tôi đã cấu hình các constructor,

89
00:07:43,009 --> 00:07:46,988
sau đó để xử lý lỗi trong phương pháp getDishes

90
00:07:46,988 --> 00:07:50,980
ví dụ, chúng tôi sẽ đường ống để CatchErrors phương pháp.

91
00:07:50,980 --> 00:07:54,762
Và sau đó gọi phương pháp HandleError sau

92
00:07:54,762 --> 00:08:00,446
này.ProcesshttpmsgService trong phương pháp CatchError.

93
00:08:00,446 --> 00:08:07,817
Vì vậy, theo cách này Khi khách hàng HTTP trả về một lỗi sau đó điều này sẽ được xử lý và

94
00:08:07,817 --> 00:08:12,875
thông báo lỗi thích hợp sẽ được trích xuất.

95
00:08:12,875 --> 00:08:16,879
Và sau đó nó sẽ kết thúc ném lỗi thông qua

96
00:08:16,879 --> 00:08:20,112
phương pháp HandleError tại thời điểm đó.

97
00:08:20,112 --> 00:08:24,108
Tương tự như vậy, chúng ta hãy làm tương tự với các GetDish và

98
00:08:24,108 --> 00:08:27,710
các phương pháp GetFeatureDish cũng.

99
00:08:27,710 --> 00:08:31,710
Bây giờ, khi nói đến phương pháp GetDish ids,

100
00:08:31,710 --> 00:08:36,200
kể từ khi phương pháp GetDish ids đang sử dụng phương pháp GetDish,.

101
00:08:36,200 --> 00:08:40,670
Vì vậy, chúng ta không cần phải gọi một cách rõ ràng HandleError vì nếu có lỗi phát sinh thì

102
00:08:40,670 --> 00:08:45,560
phương thức GetDishes sẽ đã chuyển đổi lỗi đó thành một chuỗi lỗi.

103
00:08:45,560 --> 00:08:50,930
Vì vậy, chúng tôi chỉ cần bắt lỗi và sau đó trả lại lỗi từ GetDish Ids.

104
00:08:50,930 --> 00:08:55,020
Thông thường, chúng tôi thậm chí sẽ không đi đến thời điểm này nếu một lỗi phát sinh, bởi vì

105
00:08:55,020 --> 00:09:00,250
phương pháp GetDishes sẽ xử lý lỗi một cách thích hợp tại thời điểm đó.

106
00:09:00,250 --> 00:09:06,880
Vì vậy, một khi chúng tôi đã cấu hình các món ăn dịch vụ thích hợp,

107
00:09:06,880 --> 00:09:12,600
sau đó chúng tôi sẽ có thể sau đó sử dụng các

108
00:09:12,600 --> 00:09:17,283
phương pháp CatchError để đối phó với các lỗi phát sinh.

109
00:09:17,283 --> 00:09:23,647
Bây giờ chúng tôi đã cập nhật dịch vụ của chúng tôi để có thể đối phó với lỗi.

110
00:09:23,647 --> 00:09:27,486
Làm thế nào để chúng ta tự xử lý điều này trong thành phần của chúng ta?

111
00:09:27,486 --> 00:09:31,309
Vì vậy, trong một thành phần, vì vậy ví dụ, khi chúng ta đi đến thành phần menu.

112
00:09:31,309 --> 00:09:34,557
Những gì chúng tôi nhận ra là khi chúng tôi đăng ký,

113
00:09:34,557 --> 00:09:38,280
chúng tôi mong đợi các món ăn sẽ được giao cho chúng tôi.

114
00:09:38,280 --> 00:09:40,750
Bây giờ, có thể là hướng dẫn của các món ăn,

115
00:09:40,750 --> 00:09:44,210
lỗi sẽ được cung cấp bởi ném quan sát và

116
00:09:44,210 --> 00:09:47,430
sau đó kết quả trong thông báo lỗi có sẵn cho chúng tôi.

117
00:09:47,430 --> 00:09:52,540
Vì vậy, để đối phó với tình huống đó, tôi sẽ giới thiệu một

118
00:09:52,540 --> 00:09:59,088
biến mới được gọi là ErrMess trong thành phần menu đó là chuỗi kiểu.

119
00:09:59,088 --> 00:10:05,647
Và sau đó bản thân phương pháp đăng ký cung cấp một cách xử lý lỗi.

120
00:10:05,647 --> 00:10:12,315
Vì vậy, các phương pháp đăng ký, ngay bây giờ chúng tôi đã chỉ định một chức năng ở đây.

121
00:10:12,315 --> 00:10:17,142
Chúng tôi cũng có thể chỉ định một chức năng thứ hai mà

122
00:10:17,142 --> 00:10:21,020
sẽ được gọi khi kết quả lỗi.

123
00:10:21,020 --> 00:10:26,000
Vì vậy, trong trường hợp này, tôi có thể cung cấp một chức năng lỗi thứ hai nói

124
00:10:26,000 --> 00:10:30,460
, ErrMess, đó là giá trị trả về

125
00:10:30,460 --> 00:10:35,630
khi ném quan sát được thực hiện bởi DishService.

126
00:10:35,630 --> 00:10:43,850
Vì vậy, trong trường hợp này, tôi sẽ nói this.errmess = <any> errmess, và đó là nó.

127
00:10:43,850 --> 00:10:48,709
Vì vậy, ở đây những gì xảy ra là khi quan sát

128
00:10:48,709 --> 00:10:53,082
được trả về bởi DishService là một giá trị,

129
00:10:53,082 --> 00:10:57,707
sau đó điều đó sẽ được xử lý bởi phần đầu tiên.

130
00:10:57,707 --> 00:11:01,434
Nếu quan sát được trả về với ném quan sát được,

131
00:11:01,434 --> 00:11:03,874
thì hàm này sẽ được thực thi.

132
00:11:03,874 --> 00:11:07,689
Và trong chức năng này, chúng tôi đang dùng thông báo lỗi và

133
00:11:07,689 --> 00:11:12,949
sau đó chụp thông báo lỗi vào chuỗi ErrMess này mà chúng tôi có ở đây.

134
00:11:12,949 --> 00:11:16,776
Vì vậy, bây giờ chúng tôi có thông báo lỗi có sẵn cho chúng tôi, vì vậy

135
00:11:16,776 --> 00:11:21,940
chúng tôi có thể hiển thị thông báo lỗi này trên quan điểm của thành phần menu này.

136
00:11:21,940 --> 00:11:25,910
Vậy làm thế nào để chúng ta hiển thị điều này trong chế độ xem thành phần trình đơn?

137
00:11:25,910 --> 00:11:33,700
Vì vậy, đi đến tập tin mẫu thành phần menu, ở đây chúng ta thấy rằng nếu các món ăn không phải là null,

138
00:11:33,700 --> 00:11:39,200
sau đó chúng tôi đang hiển thị menu với tất cả các món ăn.

139
00:11:39,200 --> 00:11:46,550
Nếu các món ăn là null thì spinner này đang được hiển thị ở đó.

140
00:11:46,550 --> 00:11:50,903
Bây giờ, chúng ta sẽ thêm vào một nữa ở đây,

141
00:11:50,903 --> 00:11:55,107
ngay cả khi ErrMess mà chúng ta có,

142
00:11:55,107 --> 00:11:59,912
biến, không phải là null, sau đó cũng

143
00:11:59,912 --> 00:12:04,866
spinner nên được ẩn và sau đó,

144
00:12:04,866 --> 00:12:10,300
cuối cùng, thêm vào một div hơn với một NGIf.

145
00:12:10,300 --> 00:12:15,077
Vì vậy, những gì điều này làm là lặn cuối cùng này sẽ được hiển thị trong

146
00:12:15,077 --> 00:12:19,470
trường hợp có một lỗi, và thông báo lỗi.

147
00:12:19,470 --> 00:12:23,345
Chuỗi ErrMess được thiết lập để thông báo lỗi.

148
00:12:23,345 --> 00:12:29,648
Vì vậy, trong trường hợp đó, chúng tôi sẽ chỉ đơn giản là nói lỗi h2,

149
00:12:29,648 --> 00:12:35,962
và sau đó tôi sẽ chỉ hiển thị chuỗi đó như,

150
00:12:41,159 --> 00:12:46,586
Một chuỗi trong quan điểm đó, đó là nó.

151
00:12:46,586 --> 00:12:50,539
Bạn có thể thực hiện một cách phức tạp hơn để hiển thị thông báo lỗi nếu bạn

152
00:12:50,539 --> 00:12:51,081
muốn.

153
00:12:51,081 --> 00:12:54,118
Nhưng tất cả những gì tôi sẽ làm là nếu có một lỗi,

154
00:12:54,118 --> 00:12:58,280
tôi sẽ chỉ đơn giản là hiển thị lỗi trên màn hình và sau đó hiển thị một ErrMess.

155
00:12:58,280 --> 00:13:04,283
Bạn thậm chí có thể phong cách nó bằng cách thay đổi màu sắc thành màu đỏ và như

156
00:13:04,283 --> 00:13:09,875
vậy, nhưng tôi sẽ chỉ để nó như thế ở đó.

157
00:13:09,875 --> 00:13:16,477
Vì vậy, với điều này, chúng tôi sẽ kết thúc hiển thị thông báo lỗi trong chế độ xem ở đây.

158
00:13:16,477 --> 00:13:21,471
Các thủ tục tương tự cũng có thể được sử dụng với các thành phần món ăn và

159
00:13:21,471 --> 00:13:26,764
cũng là thành phần nhà mà chúng tôi đang truy cập vào các dịch vụ món ăn.

160
00:13:26,764 --> 00:13:32,692
Vì vậy, đi đến các thành phần món ăn, sẽ làm chính xác cùng một điều,

161
00:13:32,692 --> 00:13:42,680
vì vậy trong các thành phần món ăn tôi sẽ bao gồm, ErrMess đây.

162
00:13:42,680 --> 00:13:45,654
Và sau đó ngay tại đây trong đăng ký,

163
00:13:45,654 --> 00:13:49,190
đây là nơi chúng tôi đang nhận được giá trị món ăn.

164
00:13:49,190 --> 00:13:50,260
Vì vậy, phần đầu tiên,

165
00:13:50,260 --> 00:13:55,770
những gì chúng tôi đã bao gồm sẽ được gọi là nếu quan sát trả về một giá trị.

166
00:13:55,770 --> 00:14:00,770
Nhưng nếu nó không trả về một giá trị, sau đó chúng ta cần phải đối phó với các thông báo lỗi.

167
00:14:00,770 --> 00:14:04,360
Và chúng tôi sẽ sử dụng chính xác cùng một

168
00:14:04,360 --> 00:14:09,620
chức năng thông báo lỗi mà chúng tôi đã xác định trước đó trong thành phần menu.

169
00:14:09,620 --> 00:14:15,926
Vì vậy, chúng ta sẽ nói rằng this.errmess

170
00:14:15,926 --> 00:14:20,791
= Ermess ở đây.

171
00:14:20,791 --> 00:14:26,971
Đó là nó, vì vậy thành phần món ăn của tôi bây giờ được cập nhật.

172
00:14:26,971 --> 00:14:31,521
Vì vậy, tôi cần phải cập nhật tập tin mẫu của thành phần món ăn.

173
00:14:31,521 --> 00:14:34,317
Vì vậy, đi đến các tập tin mẫu,

174
00:14:34,317 --> 00:14:40,240
chúng ta thấy rằng chúng ta sẽ được hiển thị các món ăn nếu món ăn không phải là null.

175
00:14:40,240 --> 00:14:45,034
Và sau đó xuống dưới đây, chúng tôi đang xử lý tình

176
00:14:45,034 --> 00:14:49,326
huống mà chúng tôi sẽ hiển thị các spinner nếu món ăn là null.

177
00:14:49,326 --> 00:14:54,826
Vì vậy, hãy để tôi thêm vào cũng, nếu thông báo lỗi không phải là null sau đó tôi nên

178
00:14:54,826 --> 00:15:00,235
hiển thị thông báo lỗi chứ không phải là món ăn ở đây, phải không?

179
00:15:00,235 --> 00:15:03,827
Vì vậy, hãy để tôi đi trước và

180
00:15:03,827 --> 00:15:10,075
sao chép mã từ thành phần menu.

181
00:15:10,075 --> 00:15:12,790
Tôi sẽ sử dụng chính xác cùng một mã cho các

182
00:15:12,790 --> 00:15:16,171
thành phần chi tiết món ăn tập tin mẫu cũng.

183
00:15:16,171 --> 00:15:19,435
Vậy, ngay đó.

184
00:15:19,435 --> 00:15:22,823
Hãy để tôi tiếp tục và chèn mã đó vào đây.

185
00:15:22,823 --> 00:15:26,130
Vì vậy, chúng ta thấy rằng nếu ErrMess không phải là null,

186
00:15:26,130 --> 00:15:30,838
sau đó lỗi này sẽ được hiển thị trong chế độ xem ở đó.

187
00:15:30,838 --> 00:15:31,938
Bây giờ cùng một điều,

188
00:15:31,938 --> 00:15:36,502
đi đến thành phần nhà chúng ta cần phải trải qua các thủ tục tương tự.

189
00:15:36,502 --> 00:15:40,688
Bây giờ trong thành phần nhà, tất nhiên, chúng tôi có món ăn, thăng tiến, và lãnh đạo.

190
00:15:40,688 --> 00:15:47,625
Vì vậy, tôi sẽ xác định riêng biệt, Strings cho

191
00:15:47,625 --> 00:15:53,169
mỗi một trong số họ bởi vì lỗi có thể phát sinh từ bất kỳ một trong ba.

192
00:15:53,169 --> 00:15:57,927
Ngay bây giờ chúng ta chỉ đang đối phó với món ăn được lấy từ phía máy chủ.

193
00:15:57,927 --> 00:16:04,000
Hai người còn lại tôi sẽ mong bạn làm điều đó như là một phần của, nhiệm vụ cuối cùng.

194
00:16:04,000 --> 00:16:10,252
Vì vậy, chúng tôi sẽ, tôi sẽ nói món ăn errmess chuỗi và sau đó đi xuống vào mã ở đây.

195
00:16:10,252 --> 00:16:13,630
Và trong mã ở đây,

196
00:16:13,630 --> 00:16:18,146
chúng tôi sẽ chỉ đơn giản là nói errmess.

197
00:16:18,146 --> 00:16:23,925
Món ăn này errmess = bất kỳ

198
00:16:23,925 --> 00:16:30,130
errmess, đó là nó.

199
00:16:30,130 --> 00:16:35,036
Và tương tự, cập nhật các tập tin mẫu thành phần nhà.

200
00:16:35,036 --> 00:16:40,215
Và đi đến tập tin mẫu thành phần nhà,

201
00:16:40,215 --> 00:16:45,392
chúng ta thấy rằng chúng ta có thùng món ăn hiển thị ở đó,

202
00:16:45,392 --> 00:16:50,461
vì vậy bây giờ cho cái này tôi nên nói hoặc món ăn ErrMess.

203
00:16:50,461 --> 00:16:55,738
Và sau đó, dưới đây, tôi sẽ bao gồm mã

204
00:16:55,738 --> 00:17:00,648
mà tôi đã sao chép từ thành phần menu, và

205
00:17:00,648 --> 00:17:04,600
sau đó tôi cập nhật nó vào món ăn ErrMess ở đây.

206
00:17:04,600 --> 00:17:11,957
Và cũng có thể, cập nhật điều này cho DisherRmess ở đây, đó là nó.

207
00:17:11,957 --> 00:17:14,113
Hãy lưu các thay đổi.

208
00:17:14,113 --> 00:17:18,823
Đi đến trình duyệt, bạn thấy rằng mọi thứ hoạt động giống như trước đây.

209
00:17:18,823 --> 00:17:24,249
Các nhà, các thành phần menu và cũng là thành phần chi tiết món ăn mà không có bất kỳ vấn đề.

210
00:17:24,249 --> 00:17:27,498
Bây giờ câu hỏi là, làm thế nào để chúng ta gây ra lỗi?

211
00:17:27,498 --> 00:17:35,566
Để gây ra lỗi, một cách có thể mà chúng ta có thể giải quyết vấn đề là chúng ta đi và

212
00:17:35,566 --> 00:17:40,961
tìm kiếm một thông tin không tồn tại từ máy chủ.

213
00:17:40,961 --> 00:17:45,865
Hãy để tôi đi đến dịch vụ món ăn và sau đó gây ra

214
00:17:45,865 --> 00:17:51,240
vấn đề đầu tiên của tôi trong DishService ở đây.

215
00:17:51,240 --> 00:17:55,460
Vì vậy, đối với các món ăn đặc trưng thay vì các món ăn, hãy để tôi phạm một sai lầm và

216
00:17:55,460 --> 00:17:59,470
nói dishees và sau đó lưu lại sự thay đổi.

217
00:17:59,470 --> 00:18:04,160
Rõ ràng điều đó có nghĩa là url này không tồn tại.

218
00:18:04,160 --> 00:18:07,482
Vì vậy, điều gì sẽ xảy ra nếu nó truy cập vào máy chủ?

219
00:18:07,482 --> 00:18:11,514
Đi đến trình duyệt khi chúng ta di chuyển,

220
00:18:11,514 --> 00:18:16,504
bạn thấy rằng món ăn không được hiển thị ở đây.

221
00:18:16,504 --> 00:18:19,570
Nó nói ở đây lỗi 404 Không tìm thấy.

222
00:18:19,570 --> 00:18:24,170
Điều này là bởi vì chúng tôi đang cố gắng truy cập thông tin món ăn tại

223
00:18:24,170 --> 00:18:28,424
các địa chỉ URL mà không tồn tại ở phía máy chủ.

224
00:18:28,424 --> 00:18:32,289
Vì vậy, bạn thấy cách thông báo lỗi đang được hiển thị ở đây.

225
00:18:32,289 --> 00:18:36,172
Tất nhiên, bạn có thể được một chút ưa thích hơn và làm nhiều công việc hơn xung quanh điều này và

226
00:18:36,172 --> 00:18:39,460
sau đó hiển thị thông báo lỗi một cách có ý nghĩa hơn.

227
00:18:39,460 --> 00:18:44,750
Nhưng nguyên tắc cơ bản được đánh dấu ở đây nói rằng bạn

228
00:18:44,750 --> 00:18:50,357
có thể hiển thị một thông báo lỗi nếu một cái gì đó không được thực hiện đúng

229
00:18:50,357 --> 00:18:56,194
khi bạn đang cố gắng truy cập thông tin từ phía máy chủ của bạn.

230
00:18:56,194 --> 00:19:02,373
Tất nhiên, vì vậy đây là một lỗi được tạo ra nhân tạo trong ứng dụng của tôi.

231
00:19:02,373 --> 00:19:07,020
Để gây ra một loại lỗi khác, tôi đã đi đến cửa sổ thiết bị đầu cuối của tôi và

232
00:19:07,020 --> 00:19:12,295
sau đó tắt máy chủ để xem ứng dụng Angular của tôi sẽ làm gì trong trường hợp này.

233
00:19:12,295 --> 00:19:15,267
Vì vậy, sau khi tắt máy chủ,

234
00:19:15,267 --> 00:19:20,330
chúng ta hãy xem những gì các thành phần nhà sẽ hiển thị trong chế độ xem của nó.

235
00:19:21,830 --> 00:19:26,620
Vì vậy, đi đến thành phần nhà, bây giờ chúng ta thấy rằng bởi vì

236
00:19:26,620 --> 00:19:31,330
ứng dụng Angular của tôi không thể truy cập vào máy chủ, nó đã gây ra một lỗi một lần nữa.

237
00:19:31,330 --> 00:19:37,450
Và sau đó nó cho thấy chuỗi này ở đó để chỉ ra rằng một số lỗi đã xảy ra.

238
00:19:37,450 --> 00:19:40,560
Tất nhiên, đây là một chuỗi khó hiểu,

239
00:19:40,560 --> 00:19:45,010
không truyền đạt bất cứ điều gì có ý nghĩa về nguồn gốc của lỗi là gì.

240
00:19:45,010 --> 00:19:52,420
Nhưng đó là tất cả những gì chúng ta có thể cố gắng truy cập vào máy chủ trong ứng dụng này.

241
00:19:52,420 --> 00:19:56,260
Điều tương tự, nếu tôi vào menu, bạn sẽ thấy cùng một loại điều được

242
00:19:56,260 --> 00:19:59,010
hiển thị, bởi vì máy chủ không có sẵn, và do đó

243
00:19:59,010 --> 00:20:02,150
thông tin món ăn không thể được lấy từ máy chủ.

244
00:20:02,150 --> 00:20:05,110
Với điều này, chúng tôi hoàn thành bài tập này.

245
00:20:05,110 --> 00:20:07,660
Trong bài tập này, chúng ta đã học được cách đối phó với các

246
00:20:07,660 --> 00:20:13,040
lỗi phát sinh trong giao tiếp máy chủ khách trong ứng dụng Angular của chúng tôi.

247
00:20:13,040 --> 00:20:18,333
Đây là thời điểm tốt để bạn thực hiện một cam kết git với thông điệp http phần hai.

248
00:20:18,333 --> 00:20:24,225
[ NHẠC]