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

2
00:00:04,431 --> 00:00:08,086
A comunicação entre cliente e servidor nunca é um negócio concluído.

3
00:00:08,086 --> 00:00:10,326
Parafraseando um famoso provérbio,

4
00:00:10,326 --> 00:00:14,168
há muitas aljava entre o cliente e o servidor.

5
00:00:14,168 --> 00:00:17,226
Então, como lidamos com erros quando eles surgem,

6
00:00:17,226 --> 00:00:21,415
quando estamos nos comunicando entre o cliente e o servidor?

7
00:00:21,415 --> 00:00:26,008
Vamos falar sobre isso neste exercício.

8
00:00:26,008 --> 00:00:29,931
Quando o servidor gera uma resposta, ou o cliente HTTP,

9
00:00:29,931 --> 00:00:35,110
ao se comunicar com o servidor, encontra um erro e gera

10
00:00:35,110 --> 00:00:40,390
uma resposta de erro, isso é entregue na forma de resposta de erro HTTP.

11
00:00:40,390 --> 00:00:43,760
Agora, esta resposta, queremos ser capazes de processá-lo e

12
00:00:43,760 --> 00:00:48,840
, em seguida, transformá-lo em uma string de mensagem de resposta, que

13
00:00:48,840 --> 00:00:54,790
pode ser entregue ao cliente para que o cliente possa exibir isso na tela.

14
00:00:54,790 --> 00:00:56,727
Então, para nos permitir fazer isso,

15
00:00:56,727 --> 00:01:02,727
vamos criar um novo serviço chamado processo mensagem HTTP neste, esta é pasta.

16
00:01:02,727 --> 00:01:08,663
Então, para fazer isso, no prompt digite ng,

17
00:01:08,663 --> 00:01:15,174
g service services/processhttpMsg,

18
00:01:15,174 --> 00:01:22,265
e gerar o serviço ProcessHttpMsg.

19
00:01:22,265 --> 00:01:26,178
Agora, uma vez que o serviço é gerado, então vamos em frente e

20
00:01:26,178 --> 00:01:27,921
adicioná-lo ao módulo do aplicativo.

21
00:01:27,921 --> 00:01:36,240
E, em seguida, vamos adicionar um método para o serviço ProcessHttpMsg.

22
00:01:36,240 --> 00:01:40,068
Agora que criamos o serviço ProcessHttpMsg,

23
00:01:40,068 --> 00:01:44,653
vamos em frente e, em seguida, adicioná-lo ao arquivo app.module.ts.

24
00:01:44,653 --> 00:01:52,993
Então, indo para o arquivo app.module.ts,

25
00:01:52,993 --> 00:02:02,353
deixe-me importar o serviço ProcessHttpMsg,

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

27
00:02:15,255 --> 00:02:22,945
Assim, uma vez que é importado, então poderemos usá-lo em nosso aplicativo.

28
00:02:22,945 --> 00:02:26,463
Então vamos em frente e adicionar isso em nossos provedores.

29
00:02:26,463 --> 00:02:29,216
Então, entrando em nossos provedores,

30
00:02:29,216 --> 00:02:34,952
deixe-me adicionar o ProcesshttpMsgService aos provedores.

31
00:02:34,952 --> 00:02:38,429
A primeira coisa que faremos é incluir um novo método em

32
00:02:38,429 --> 00:02:41,618
o ProcessHttpMsgService chamado erros de identificador,

33
00:02:41,618 --> 00:02:45,105
que cuidará de erros de manuseio quando surgirem.

34
00:02:45,105 --> 00:02:51,220
E então vamos fazer uso deles nos serviços onde acessamos o servidor.

35
00:02:51,220 --> 00:02:54,546
Para começar, vamos primeiro importar,

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

37
00:03:03,969 --> 00:03:09,766
e isso nos ajuda a jogar em erro sempre que isso surgir.

38
00:03:12,005 --> 00:03:20,787
E, em seguida, importamos HTTPERRORResponse de,

39
00:03:23,316 --> 00:03:28,193
angular/common/http.

40
00:03:30,926 --> 00:03:35,632
Em seguida, vamos começar a projetar método handleError, e

41
00:03:35,632 --> 00:03:41,257
isso leva, como um parâmetro, um erro que poderia ser uma resposta,

42
00:03:41,257 --> 00:03:45,042
que é uma resposta de erro do servidor,

43
00:03:45,042 --> 00:03:48,746
ou qualquer outra razão que o erro surge.

44
00:03:48,746 --> 00:03:54,095
Então, dentro deste método HandleError, o que devemos fazer?

45
00:03:54,095 --> 00:04:02,195
Vamos tentar construir uma mensagem que resume o que é o erro.

46
00:04:02,195 --> 00:04:06,389
Então vamos incluir uma nova variável string aqui.

47
00:04:07,880 --> 00:04:13,080
Se error.error for uma instância

48
00:04:13,080 --> 00:04:18,699
de ErrorEvent, portanto, se este for um evento de erro que ocorre,

49
00:04:18,699 --> 00:04:24,170
então o error.error.message conterá informações.

50
00:04:24,170 --> 00:04:26,695
Então vamos definir a mensagem de erro para

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

52
00:04:35,630 --> 00:04:42,630
Se esse não for o caso, então isso significa que isso está vindo do lado do servidor,

53
00:04:42,630 --> 00:04:48,500
e assim, nesse caso, a mensagem de erro é construída dizendo igual a backquotes,

54
00:04:48,500 --> 00:04:55,940
anote as backquotes aqui e, em seguida, $ {error.status}.

55
00:04:55,940 --> 00:04:59,450
Então, estamos extraindo as informações de status de lá.

56
00:04:59,450 --> 00:05:03,956
E então, - Error.StatusText,

57
00:05:03,956 --> 00:05:07,710
se o StatusText existir, ou

58
00:05:07,710 --> 00:05:12,226
que será uma string vazia lá.

59
00:05:12,226 --> 00:05:17,691
E então também incluiremos o próprio error.error,

60
00:05:17,691 --> 00:05:23,866
o objeto de erro completo em si, bem ali na string.

61
00:05:23,866 --> 00:05:29,320
E então use isso como nossa mensagem de erro.

62
00:05:29,320 --> 00:05:33,484
Agora, uma vez que temos a mensagem de erro,

63
00:05:33,484 --> 00:05:38,169
então seremos capazes de usar o ThrowerError para

64
00:05:38,169 --> 00:05:43,520
retornar um erro observável para a nossa aplicação.

65
00:05:44,940 --> 00:05:48,960
Então o que isso significa é que isso está lançando um erro neste ponto,

66
00:05:48,960 --> 00:05:51,370
com a mensagem de erro incluída lá.

67
00:05:51,370 --> 00:05:56,549
Portanto, esta cadeia de mensagem de erro é construída com base nas informações

68
00:05:56,549 --> 00:06:02,243
que obtemos aqui, seja porque o lado do servidor respondeu com um erro ou

69
00:06:02,243 --> 00:06:05,111
o erro pode ser de outras razões.

70
00:06:05,111 --> 00:06:09,606
Então, em ambos os casos, vamos construir uma mensagem de erro e, em seguida, retorná-la.

71
00:06:09,606 --> 00:06:12,493
Agora, onde fazemos uso deste erro de identificador?

72
00:06:12,493 --> 00:06:17,549
Agora, dentro de nossos serviços, por exemplo, o arquivo dishservice.ts,

73
00:06:17,549 --> 00:06:22,866
vimos que antes quando dissemos que este HTTP obter, e então nós apenas dissemos mapa,

74
00:06:22,866 --> 00:06:28,020
e, em seguida, assumimos que a resposta é sempre uma resposta positiva.

75
00:06:28,020 --> 00:06:31,580
Mas suponha que sua resposta não seja positiva, e

76
00:06:31,580 --> 00:06:37,330
então ele retorna um erro, então precisamos pegar esse erro.

77
00:06:37,330 --> 00:06:44,180
Para nos ajudar com isso, importamos o operador CatchError de rxjs,

78
00:06:44,180 --> 00:06:50,690
e, em seguida, também importamos o ProcessHttpMsgService

79
00:06:50,690 --> 00:06:56,001
que acabamos de criar anteriormente em

80
00:06:56,001 --> 00:07:01,860
nosso serviço de prato para que possamos usar o método de erro de identificador a partir daí.

81
00:07:01,860 --> 00:07:08,060
Então nós importamos isso do./process-httpmsg.service.

82
00:07:08,060 --> 00:07:12,670
E então, indo para baixo para o construtor,

83
00:07:12,670 --> 00:07:18,690
nós agora injetamos o serviço de mensagem HTTP processo

84
00:07:18,690 --> 00:07:22,910
no construtor, junto com o cliente HTTP.

85
00:07:22,910 --> 00:07:27,080
Para que possamos fazer uso deste serviço,

86
00:07:27,080 --> 00:07:32,280
especialmente o método de erro de identificador do serviço para lidar com os erros

87
00:07:32,280 --> 00:07:37,710
que são retornados pelo nosso cliente HTTP lá.

88
00:07:38,930 --> 00:07:43,009
Agora, uma vez que tenhamos configurado o construtor,

89
00:07:43,009 --> 00:07:46,988
em seguida, para lidar com erro no método getDates para

90
00:07:46,988 --> 00:07:50,980
exemplo, vamos canalizar para o método CatchErrors.

91
00:07:50,980 --> 00:07:54,762
E, em seguida, chamar o método handleError após

92
00:07:54,762 --> 00:08:00,446
this.processhttpMsgService dentro do método CatchError.

93
00:08:00,446 --> 00:08:07,817
Assim, quando o cliente HTTP retorna um erro, então isso será processado e

94
00:08:07,817 --> 00:08:12,875
a mensagem de erro apropriada será extraída.

95
00:08:12,875 --> 00:08:16,879
E, em seguida, ele vai acabar lançando o erro através

96
00:08:16,879 --> 00:08:20,112
o método handleError naquele ponto.

97
00:08:20,112 --> 00:08:24,108
Da mesma forma, vamos fazer o mesmo com os métodos GetDish e

98
00:08:24,108 --> 00:08:27,710
getFeatureDish também.

99
00:08:27,710 --> 00:08:31,710
Agora, quando se trata do método getDish ids,

100
00:08:31,710 --> 00:08:36,200
uma vez que o método getDish ids está fazendo uso do método getDish,.

101
00:08:36,200 --> 00:08:40,670
Portanto, não precisamos chamar explicitamente o handleError porque se surgir algum erro

102
00:08:40,670 --> 00:08:45,560
o método getDistes já terá convertido esse erro em uma string de erro.

103
00:08:45,560 --> 00:08:50,930
Então, só precisamos pegar o erro e, em seguida, retornar o erro de GetDish Ids.

104
00:08:50,930 --> 00:08:55,020
Normalmente, nem chegaríamos a esse ponto se surgir um erro, porque

105
00:08:55,020 --> 00:09:00,250
o método getDistes teria processado o erro adequadamente nesse ponto.

106
00:09:00,250 --> 00:09:06,880
Assim, uma vez que tenhamos configurado o serviço de prato adequadamente,

107
00:09:06,880 --> 00:09:12,600
então seremos capazes de então fazer uso do método CatchError

108
00:09:12,600 --> 00:09:17,283
para lidar com os erros que surgem.

109
00:09:17,283 --> 00:09:23,647
Agora que atualizamos nosso serviço para poder lidar com erros.

110
00:09:23,647 --> 00:09:27,486
Como lidamos com isso dentro do nosso componente?

111
00:09:27,486 --> 00:09:31,309
Assim, dentro de um componente, por exemplo, quando vamos para o componente de menu.

112
00:09:31,309 --> 00:09:34,557
O que percebemos é que quando fazemos a assinatura,

113
00:09:34,557 --> 00:09:38,280
estávamos esperando que os pratos fossem entregues para nós.

114
00:09:38,280 --> 00:09:40,750
Agora, é possível que o instruir dos pratos,

115
00:09:40,750 --> 00:09:44,210
o erro será entregue pelo lance observável e

116
00:09:44,210 --> 00:09:47,430
então isso resulta na mensagem de erro estar disponível para nós.

117
00:09:47,430 --> 00:09:52,540
Então, para lidar com essa situação, vou introduzir uma nova variável

118
00:09:52,540 --> 00:09:59,088
chamada errMess no componente de menu que é do tipo string.

119
00:09:59,088 --> 00:10:05,647
E, em seguida, o próprio método de assinatura fornece uma maneira de lidar com erros.

120
00:10:05,647 --> 00:10:12,315
Então, o método de assinatura, agora temos apenas especificado uma função aqui.

121
00:10:12,315 --> 00:10:17,142
Também podemos especificar uma segunda função que será

122
00:10:17,142 --> 00:10:21,020
ser chamado quando o resultado do erro.

123
00:10:21,020 --> 00:10:26,000
Então, neste caso, eu posso fornecer uma segunda função de erro dizendo,

124
00:10:26,000 --> 00:10:30,460
errMess, que é o valor retornado em

125
00:10:30,460 --> 00:10:35,630
quando o lançamento observável é feito pelo DishService.

126
00:10:35,630 --> 00:10:43,850
Então, neste caso, eu diria This.errMess = <any>ErrMess, e é isso.

127
00:10:43,850 --> 00:10:48,709
Então aqui o que acontece é que quando o

128
00:10:48,709 --> 00:10:53,082
observável é retornado pelo DishService é um Valor,

129
00:10:53,082 --> 00:10:57,707
então isso seria tratado pela primeira parte.

130
00:10:57,707 --> 00:11:01,434
Se o observável for retornado com o lance observável,

131
00:11:01,434 --> 00:11:03,874
então esta função será executada.

132
00:11:03,874 --> 00:11:07,689
E nesta função, estamos pegando a mensagem de erro e

133
00:11:07,689 --> 00:11:12,949
, em seguida, capturando essa mensagem de erro nesta string errMess que temos aqui.

134
00:11:12,949 --> 00:11:16,776
Então, agora temos a mensagem de erro disponível para nós, então

135
00:11:16,776 --> 00:11:21,940
podemos exibir essa mensagem de erro na visualização deste componente de menu.

136
00:11:21,940 --> 00:11:25,910
Então, como podemos exibir isso na visualização de componentes do menu?

137
00:11:25,910 --> 00:11:33,700
Então, indo para o arquivo de modelo de componentes do menu, aqui vemos que se os pratos não é nulo,

138
00:11:33,700 --> 00:11:39,200
então estamos exibindo o menu com todos os pratos.

139
00:11:39,200 --> 00:11:46,550
Se os pratos são nulos, então este girador está sendo exibido lá.

140
00:11:46,550 --> 00:11:50,903
Agora, vamos adicionar em mais um aqui,

141
00:11:50,903 --> 00:11:55,107
mesmo se o errMess que temos,

142
00:11:55,107 --> 00:11:59,912
a variável, não é nulo, então também

143
00:11:59,912 --> 00:12:04,866
o spinner deve ser escondido e, em seguida,

144
00:12:04,866 --> 00:12:10,300
finalmente, adicionar mais um div com um nGIF.

145
00:12:10,300 --> 00:12:15,077
Então o que isso faz é que este último mergulho será exibido em

146
00:12:15,077 --> 00:12:19,470
caso haja um erro, ea mensagem de erro.

147
00:12:19,470 --> 00:12:23,345
string errMess está configurada para a mensagem de erro.

148
00:12:23,345 --> 00:12:29,648
Então, nesse caso, vamos simplesmente dizer erro h2,

149
00:12:29,648 --> 00:12:35,962
e então eu vou apenas exibir essa string como,

150
00:12:41,159 --> 00:12:46,586
Uma string dentro da vista lá, é isso.

151
00:12:46,586 --> 00:12:50,539
Você pode fazer uma maneira mais elaborada de exibir a mensagem de erro se assim o desejar

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

153
00:12:51,081 --> 00:12:54,118
Mas tudo o que eu vou fazer é se houver um erro,

154
00:12:54,118 --> 00:12:58,280
Eu vou simplesmente mostrar erro na tela e, em seguida, exibir um errMess.

155
00:12:58,280 --> 00:13:04,283
Você pode até mesmo estilizar alterando a cor para vermelho e

156
00:13:04,283 --> 00:13:09,875
assim por diante, mas eu vou deixá-lo assim lá.

157
00:13:09,875 --> 00:13:16,477
Então, com isso, vamos acabar exibindo a mensagem de erro na exibição aqui.

158
00:13:16,477 --> 00:13:21,471
O mesmo procedimento também pode ser usado com o componente prato e

159
00:13:21,471 --> 00:13:26,764
também o componente doméstico onde estamos acessando o serviço de prato.

160
00:13:26,764 --> 00:13:32,692
Então, indo para o componente prato, vou fazer exatamente a mesma coisa,

161
00:13:32,692 --> 00:13:42,680
assim dentro do componente prato eu vou incluir o, ErrMess aqui.

162
00:13:42,680 --> 00:13:45,654
E então aqui dentro da assinatura,

163
00:13:45,654 --> 00:13:49,190
aqui é onde estamos recebendo o valor do prato.

164
00:13:49,190 --> 00:13:50,260
Então, a primeira parte,

165
00:13:50,260 --> 00:13:55,770
o que já incluímos será chamado se o observável retorna um valor.

166
00:13:55,770 --> 00:14:00,770
Mas se ele não retornar um valor, então precisamos lidar com a mensagem de erro.

167
00:14:00,770 --> 00:14:04,360
E vamos usar exatamente a mesma função de mensagem de erro

168
00:14:04,360 --> 00:14:09,620
que definimos anteriormente no componente de menu.

169
00:14:09,620 --> 00:14:15,926
Então, vamos dizer que this.errmess

170
00:14:15,926 --> 00:14:20,791
= Ermess aqui.

171
00:14:20,791 --> 00:14:26,971
É isso, então meu componente prato está atualizado.

172
00:14:26,971 --> 00:14:31,521
Então eu preciso atualizar o arquivo de modelo do componente prato.

173
00:14:31,521 --> 00:14:34,317
Então, indo para o arquivo de modelo,

174
00:14:34,317 --> 00:14:40,240
vemos que vamos estar exibindo o prato se o prato não é nulo.

175
00:14:40,240 --> 00:14:45,034
E, em seguida, abaixo aqui, estamos lidando com a situação

176
00:14:45,034 --> 00:14:49,326
onde vamos mostrar o girador se o prato é nulo.

177
00:14:49,326 --> 00:14:54,826
Então deixe-me adicionar também, se a mensagem de erro não é nula então eu deveria

178
00:14:54,826 --> 00:15:00,235
estar exibindo mensagem de erro em vez do prato aqui, certo?

179
00:15:00,235 --> 00:15:03,827
Então, deixe-me ir em frente e

180
00:15:03,827 --> 00:15:10,075
copiar o código do componente menu.

181
00:15:10,075 --> 00:15:12,790
Eu vou usar exatamente o mesmo código para

182
00:15:12,790 --> 00:15:16,171
o arquivo de modelo de componentes detalhe prato também.

183
00:15:16,171 --> 00:15:19,435
Então, ali mesmo.

184
00:15:19,435 --> 00:15:22,823
Deixe-me ir em frente e inserir esse código aqui.

185
00:15:22,823 --> 00:15:26,130
Então, vemos que se errMess não for nulo,

186
00:15:26,130 --> 00:15:30,838
então esse erro será exibido na exibição lá.

187
00:15:30,838 --> 00:15:31,938
Agora a mesma coisa,

188
00:15:31,938 --> 00:15:36,502
indo para o componente de casa precisamos passar pelo mesmo procedimento.

189
00:15:36,502 --> 00:15:40,688
Agora dentro do componente de casa, é claro, temos prato, promoção e líder.

190
00:15:40,688 --> 00:15:47,625
Então eu vou definir separado, Strings para

191
00:15:47,625 --> 00:15:53,169
cada um deles porque o erro poderia surgir de qualquer um dos três.

192
00:15:53,169 --> 00:15:57,927
Agora só estamos lidando com prato sendo buscado do lado do servidor.

193
00:15:57,927 --> 00:16:04,000
Os dois restantes espero que você faça isso como parte do, Atribuição final.

194
00:16:04,000 --> 00:16:10,252
Então vamos, eu vou dizer string errmess prato e, em seguida, ir para baixo para o código aqui.

195
00:16:10,252 --> 00:16:13,630
E no código aqui,

196
00:16:13,630 --> 00:16:18,146
vamos simplesmente dizer errmess.

197
00:16:18,146 --> 00:16:23,925
Este prato errmess = qualquer

198
00:16:23,925 --> 00:16:30,130
errmess, é isso.

199
00:16:30,130 --> 00:16:35,036
Da mesma forma, atualize os arquivos de modelo de componentes domésticos.

200
00:16:35,036 --> 00:16:40,215
E indo para o arquivo de modelo de componentes domésticos,

201
00:16:40,215 --> 00:16:45,392
vemos que temos o compartimento de prato exibido lá,

202
00:16:45,392 --> 00:16:50,461
então agora para este eu devo dizer ou prato errMess.

203
00:16:50,461 --> 00:16:55,738
E então, abaixo aqui, eu vou incluir o código

204
00:16:55,738 --> 00:17:00,648
que eu copiei do componente de menu, e

205
00:17:00,648 --> 00:17:04,600
então eu atualizá-lo para o prato errMess aqui.

206
00:17:04,600 --> 00:17:11,957
E também, atualize isso para DisErrMess aqui, é isso.

207
00:17:11,957 --> 00:17:14,113
Vamos salvar as alterações.

208
00:17:14,113 --> 00:17:18,823
Indo para o navegador, você vê que tudo funciona exatamente como antes.

209
00:17:18,823 --> 00:17:24,249
A casa, o componente do menu e também o componente de detalhe do prato sem qualquer problema.

210
00:17:24,249 --> 00:17:27,498
Agora a questão é, como causamos erros?

211
00:17:27,498 --> 00:17:35,566
Para causar erros, uma maneira possível de lidar com o problema é ir e

212
00:17:35,566 --> 00:17:40,961
buscar uma informação inexistente do servidor.

213
00:17:40,961 --> 00:17:45,865
Deixe-me ir para o serviço de pratos e, em seguida, causar

214
00:17:45,865 --> 00:17:51,240
meu primeiro problema no DishService aqui.

215
00:17:51,240 --> 00:17:55,460
Então, para o prato em destaque em vez de pratos, deixe-me cometer um erro e

216
00:17:55,460 --> 00:17:59,470
dizer pratos e, em seguida, salvar a mudança.

217
00:17:59,470 --> 00:18:04,160
Obviamente isso significa que este url não existe.

218
00:18:04,160 --> 00:18:07,482
Então, o que acontecerá se ele acessar o servidor?

219
00:18:07,482 --> 00:18:11,514
Indo para o navegador quando agora rolamos,

220
00:18:11,514 --> 00:18:16,504
você vê que o prato não está sendo exibido aqui.

221
00:18:16,504 --> 00:18:19,570
Diz aqui Erro 404 não encontrado.

222
00:18:19,570 --> 00:18:24,170
Isto é porque estamos tentando acessar a informação do prato em

223
00:18:24,170 --> 00:18:28,424
os disnees URL que não existe no lado do servidor.

224
00:18:28,424 --> 00:18:32,289
Então você vê como a mensagem de erro está sendo exibida aqui.

225
00:18:32,289 --> 00:18:36,172
Claro, você pode ser um pouco mais chique e fazer mais trabalho em torno disso e

226
00:18:36,172 --> 00:18:39,460
, em seguida, exibir a mensagem de erro de uma maneira mais significativa.

227
00:18:39,460 --> 00:18:44,750
Mas o princípio básico é destacado aqui dizendo que você

228
00:18:44,750 --> 00:18:50,357
pode mostrar uma mensagem de erro se algo não for executado corretamente

229
00:18:50,357 --> 00:18:56,194
quando você estiver tentando acessar informações do lado do servidor.

230
00:18:56,194 --> 00:19:02,373
Claro, então este é um erro criado artificialmente no meu aplicativo.

231
00:19:02,373 --> 00:19:07,020
Para causar mais um tipo de erro, fui para a janela do meu terminal e

232
00:19:07,020 --> 00:19:12,295
, em seguida, desligar o servidor para ver o que o meu aplicativo Angular fará neste caso.

233
00:19:12,295 --> 00:19:15,267
Então, depois de desligar o servidor,

234
00:19:15,267 --> 00:19:20,330
vamos ver o que o componente home exibirá em sua exibição.

235
00:19:21,830 --> 00:19:26,620
Então, indo para o componente home, agora vemos que porque meu aplicativo Angular

236
00:19:26,620 --> 00:19:31,330
não é capaz de acessar o servidor, ele causou um erro novamente.

237
00:19:31,330 --> 00:19:37,450
E então ele mostra essa string lá para indicar que ocorreu algum erro.

238
00:19:37,450 --> 00:19:40,560
Claro, esta é uma string enigmática,

239
00:19:40,560 --> 00:19:45,010
não transmite nada significativo sobre qual é a fonte do erro.

240
00:19:45,010 --> 00:19:52,420
Mas isso é tudo que conseguimos tentando acessar o servidor neste aplicativo.

241
00:19:52,420 --> 00:19:56,260
Mesma coisa, se eu for para o menu, você verá o mesmo tipo de coisa sendo

242
00:19:56,260 --> 00:19:59,010
exibido, porque o servidor não está disponível, e assim

243
00:19:59,010 --> 00:20:02,150
a informação do prato não pode ser obtida do servidor.

244
00:20:02,150 --> 00:20:05,110
Com isso, completamos este exercício.

245
00:20:05,110 --> 00:20:07,660
Neste exercício, aprendemos como lidar com os erros

246
00:20:07,660 --> 00:20:13,040
que surgem durante a comunicação do servidor cliente em nosso aplicativo Angular.

247
00:20:13,040 --> 00:20:18,333
Este é um bom momento para você fazer um commit git com a mensagem http parte dois.

248
00:20:18,333 --> 00:20:24,225
[MÚSICA]