All language subtitles for 11. Throwing Errors Manually

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian Download
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 1 00:00:01,180 --> 00:00:03,480 So in this lecture, we're gonna fix 2 2 00:00:03,480 --> 00:00:06,730 the request 404 error that we saw happening 3 3 00:00:06,730 --> 00:00:08,093 in the last lecture. 4 4 00:00:09,910 --> 00:00:13,090 And so as we saw in the last video, the problem here 5 5 00:00:13,090 --> 00:00:17,490 is that during the fetch, there was a 404 error, 6 6 00:00:17,490 --> 00:00:21,080 which is because our API couldn't find any country 7 7 00:00:21,080 --> 00:00:23,060 with this name. 8 8 00:00:23,060 --> 00:00:24,770 But still, even though there 9 9 00:00:24,770 --> 00:00:28,320 was obviously a big problem with this request, 10 10 00:00:28,320 --> 00:00:32,770 the fetch function still did not reject in this case, 11 11 00:00:32,770 --> 00:00:34,800 and by the way, many people, 12 12 00:00:34,800 --> 00:00:38,200 and that includes myself think that in this case, 13 13 00:00:38,200 --> 00:00:41,820 the promise should actually be rejected right away, 14 14 00:00:41,820 --> 00:00:43,880 but again, it just doesn't, 15 15 00:00:43,880 --> 00:00:45,823 and so we will have to do it manually. 16 16 00:00:47,660 --> 00:00:52,160 So to see what happens here, let's go back 17 17 00:00:52,160 --> 00:00:57,160 to this first then handler here, which gets access 18 18 00:00:57,480 --> 00:00:59,143 to the response immediately. 19 19 00:01:00,010 --> 00:01:01,543 So without even the data. 20 20 00:01:03,020 --> 00:01:05,460 So here, I'm adding back a block, 21 21 00:01:05,460 --> 00:01:07,903 and let's take a look at the response here. 22 22 00:01:08,870 --> 00:01:11,750 And also, since we added back the block, 23 23 00:01:11,750 --> 00:01:14,683 we now need to return this explicitly. 24 24 00:01:15,640 --> 00:01:18,320 So again, for now, we are just taking a look 25 25 00:01:18,320 --> 00:01:20,093 at the response object here. 26 26 00:01:21,280 --> 00:01:23,100 And so here it is, 27 27 00:01:23,100 --> 00:01:25,733 and so right here, you can see 28 28 00:01:25,733 --> 00:01:29,110 that the Ok property is set to false. 29 29 00:01:29,110 --> 00:01:30,840 And so the reason for that, 30 30 00:01:30,840 --> 00:01:32,703 is, of course, the status code 404. 31 31 00:01:34,270 --> 00:01:37,310 Now, when the request goes well, 32 32 00:01:37,310 --> 00:01:39,910 and so that's what's gonna happen when I click here. 33 33 00:01:41,940 --> 00:01:46,070 So then if we take a look at the response, Ok is true, 34 34 00:01:46,070 --> 00:01:48,960 and that's because status is 200. 35 35 00:01:48,960 --> 00:01:51,883 And so 200 literally stands for Ok. 36 36 00:01:55,410 --> 00:01:57,140 So we can now use the fact 37 37 00:01:57,140 --> 00:02:01,102 that this response has the Ok property set to false 38 38 00:02:01,102 --> 00:02:03,330 to basically reject the promise, 39 39 00:02:03,330 --> 00:02:07,510 or selves manually, now, right, 40 40 00:02:07,510 --> 00:02:11,050 so we can do that by creating a new error. 41 41 00:02:11,050 --> 00:02:16,050 So we can say, if there is no response, dot Ok, 42 42 00:02:17,310 --> 00:02:21,130 or in other words, if response dot Ok is false, 43 43 00:02:21,130 --> 00:02:26,130 then we right, throw new error, 44 44 00:02:26,252 --> 00:02:29,653 and then here we can define an error message. 45 45 00:02:31,250 --> 00:02:34,230 So let's write a very logical message here, 46 46 00:02:34,230 --> 00:02:37,880 which is country not found. 47 47 00:02:37,880 --> 00:02:41,370 So this is the real error message that we want to see here, 48 48 00:02:41,370 --> 00:02:43,730 and of course, not this one here 49 49 00:02:43,730 --> 00:02:47,661 with cannot read property of undefined. 50 50 00:02:47,661 --> 00:02:51,700 And here, we can then also take the status code, 51 51 00:02:51,700 --> 00:02:53,173 and display it as well. 52 52 00:02:55,530 --> 00:02:59,040 So this 404, in this case, let's just wrap it here 53 53 00:02:59,040 --> 00:03:03,640 into parenthesis, and Ok. 54 54 00:03:03,640 --> 00:03:06,860 So this is something that we never did before. 55 55 00:03:06,860 --> 00:03:08,863 So let's analyze what happens here. 56 56 00:03:09,820 --> 00:03:11,516 So we create the new error 57 57 00:03:11,516 --> 00:03:15,890 by using again, this constructor function, basically, 58 58 00:03:15,890 --> 00:03:18,540 and then we pass in a message, which is gonna be 59 59 00:03:18,540 --> 00:03:22,550 the error message, then we use the throw keyword here, 60 60 00:03:22,550 --> 00:03:25,990 which will immediately terminate the current function. 61 61 00:03:25,990 --> 00:03:28,850 So just like return does it. 62 62 00:03:28,850 --> 00:03:30,670 Now the effect of creating, 63 63 00:03:30,670 --> 00:03:34,290 and throwing an error in any of these then methods 64 64 00:03:34,290 --> 00:03:37,770 is that the promise will immediately reject. 65 65 00:03:37,770 --> 00:03:40,310 So basically, the promise returned 66 66 00:03:40,310 --> 00:03:44,097 by this then handler here will be a rejected promise. 67 67 00:03:44,097 --> 00:03:47,026 And that rejection will then propagate all the way down 68 68 00:03:47,026 --> 00:03:51,417 to the catch handler, which we already have set up here. 69 69 00:03:51,417 --> 00:03:55,200 And so now, if we will try to reload this, 70 70 00:03:55,200 --> 00:03:56,600 and actually, let's do that. 71 71 00:03:57,830 --> 00:04:01,230 So now this error message that we created here, 72 72 00:04:01,230 --> 00:04:04,300 so that's country not found 404. 73 73 00:04:04,300 --> 00:04:07,880 So exactly this, this is exactly the rejection 74 74 00:04:07,880 --> 00:04:11,530 that we created here by creating this new error. 75 75 00:04:11,530 --> 00:04:14,950 All right, so again, any error that happens 76 76 00:04:14,950 --> 00:04:16,985 in any of the callback functions here, 77 77 00:04:16,985 --> 00:04:20,550 so in any then handler, will immediately terminate 78 78 00:04:20,550 --> 00:04:23,170 that then handler and will propagate down 79 79 00:04:23,170 --> 00:04:26,630 to the catch method here. 80 80 00:04:26,630 --> 00:04:28,737 And then in there, we handle that error, 81 81 00:04:28,737 --> 00:04:31,167 and so therefore, that's why we then see 82 82 00:04:31,167 --> 00:04:32,653 the error here displayed. 83 83 00:04:33,820 --> 00:04:37,009 So that error dot message is exactly that message 84 84 00:04:37,009 --> 00:04:39,708 that we pass into the error here. 85 85 00:04:39,708 --> 00:04:43,604 And in fact, the same is true for any other error. 86 86 00:04:43,604 --> 00:04:46,250 So before we had this, 87 87 00:04:46,250 --> 00:04:49,830 the error that we saw was this one here, 88 88 00:04:49,830 --> 00:04:51,340 and that's because somewhere 89 89 00:04:51,340 --> 00:04:54,257 in the render country function, we are trying to read 90 90 00:04:54,257 --> 00:04:57,295 the flag from the data that we received, 91 91 00:04:57,295 --> 00:05:01,710 but the data that we received did not contain this flag. 92 92 00:05:01,710 --> 00:05:03,589 And so therefore it created this error, 93 93 00:05:03,589 --> 00:05:07,748 and then that error caused the rejection of the promise, 94 94 00:05:07,748 --> 00:05:12,748 which was then one more time handled down here, okay. 95 95 00:05:12,836 --> 00:05:17,836 So again, any error will cause any promise to reject, 96 96 00:05:18,040 --> 00:05:20,719 but here, we are simply creating our own error 97 97 00:05:20,719 --> 00:05:24,140 to basically reject the promise on purpose, 98 98 00:05:24,140 --> 00:05:25,540 so that we can then handle 99 99 00:05:25,540 --> 00:05:27,742 that error down here in the chain, 100 100 00:05:27,742 --> 00:05:31,240 so in this catch method, all right. 101 101 00:05:31,240 --> 00:05:32,874 But now, you might be wondering, 102 102 00:05:32,874 --> 00:05:36,650 why should we even bother handle all these errors? 103 103 00:05:36,650 --> 00:05:40,460 Isn't that just a bunch of work and a waste of time? 104 104 00:05:40,460 --> 00:05:44,240 Well, first, handling these errors is the only way 105 105 00:05:44,240 --> 00:05:47,902 in which we can actually display an error message like this 106 106 00:05:47,902 --> 00:05:50,380 on the screen for the user, 107 107 00:05:50,380 --> 00:05:54,050 but even more important, it's just a really bad practice 108 108 00:05:54,050 --> 00:05:57,140 to leave these rejected promises, 109 109 00:05:57,140 --> 00:05:59,790 hanging around without handling them. 110 110 00:05:59,790 --> 00:06:03,310 So don't do that, always use catch, 111 111 00:06:03,310 --> 00:06:07,013 and if necessary, you can also use finally, okay. 112 112 00:06:08,900 --> 00:06:13,780 And now, again, what if there 113 113 00:06:13,780 --> 00:06:16,363 was no error here in this promise? 114 114 00:06:17,770 --> 00:06:20,810 So if we got no problem in this one here, 115 115 00:06:20,810 --> 00:06:24,186 but then we get a problem in the second fetch. 116 116 00:06:24,186 --> 00:06:28,520 So let's say that, we don't do this, 117 117 00:06:28,520 --> 00:06:30,130 and so we have a reasonable country, 118 118 00:06:30,130 --> 00:06:32,766 which is Portugal when we click on the button, 119 119 00:06:32,766 --> 00:06:35,963 but then here, let's say that the neighbor is not this one, 120 120 00:06:37,030 --> 00:06:42,030 but this country code, which I'm sure does not exist. 121 121 00:06:44,320 --> 00:06:46,470 And so now there is gonna be a rejection 122 122 00:06:46,470 --> 00:06:49,483 in this promise, right. 123 123 00:06:51,970 --> 00:06:53,800 So we get another error here. 124 124 00:06:53,800 --> 00:06:58,600 In this case, it's a 400 error, which means something else, 125 125 00:06:58,600 --> 00:07:02,350 but in any case, the error is not handled. 126 126 00:07:02,350 --> 00:07:03,890 So we now need to go ahead, 127 127 00:07:03,890 --> 00:07:08,263 and copy this code here, also into this then handler. 128 128 00:07:09,140 --> 00:07:10,921 Let's actually do that, even though we know 129 129 00:07:10,921 --> 00:07:15,423 it's a bad practice, and we need to fix this later. 130 130 00:07:19,420 --> 00:07:24,420 Okay, and so now we get the error message that we want. 131 131 00:07:26,070 --> 00:07:28,240 So again, country not found, 132 132 00:07:28,240 --> 00:07:30,720 and this time with the code 400. 133 133 00:07:30,720 --> 00:07:33,883 But now, of course, we have all this duplicate code here. 134 134 00:07:34,880 --> 00:07:37,530 So we shouldn't have this here. 135 135 00:07:37,530 --> 00:07:41,510 And in fact, even all of this is kind of repetitive. 136 136 00:07:41,510 --> 00:07:44,000 It's really, if you think about it 137 137 00:07:44,000 --> 00:07:46,281 the same code as this one. 138 138 00:07:46,281 --> 00:07:49,010 And so now, I think that it's a good time 139 139 00:07:49,010 --> 00:07:53,070 to actually create ourselves a really nice helper function. 140 140 00:07:53,070 --> 00:07:55,270 And this helper function will wrap up 141 141 00:07:55,270 --> 00:07:57,110 the fetch the error handling, 142 142 00:07:57,110 --> 00:07:59,891 and also the conversion to JSON, 143 143 00:07:59,891 --> 00:08:03,560 because in my opinion, it's really a bit cumbersome 144 144 00:08:03,560 --> 00:08:06,343 to having to do all these steps all the time. 145 145 00:08:07,450 --> 00:08:10,730 So having the fetch, and then having to convert 146 146 00:08:10,730 --> 00:08:12,212 that response to JSON, 147 147 00:08:12,212 --> 00:08:16,870 and only then being able to handle it, right. 148 148 00:08:16,870 --> 00:08:20,460 So instead, we will basically encapsulate all of this here 149 149 00:08:20,460 --> 00:08:23,706 into one nice function, so let's do that, 150 150 00:08:23,706 --> 00:08:26,343 and I'm gonna call it getJSON. 151 151 00:08:29,360 --> 00:08:31,930 So basically, because it gets data, 152 152 00:08:31,930 --> 00:08:35,332 and it immediately converts to JSON. 153 153 00:08:35,332 --> 00:08:38,123 Now, what do we need here as parameters? 154 154 00:08:38,980 --> 00:08:41,670 Well, for sure, we need the URL, 155 155 00:08:41,670 --> 00:08:44,543 and so for now, that's okay, here. 156 156 00:08:46,090 --> 00:08:51,053 So let's get, or actually, we can just write it. 157 157 00:08:52,150 --> 00:08:54,370 So what we want here is fetch, 158 158 00:08:54,370 --> 00:08:57,820 and then the URL that we pass into the function, 159 159 00:08:57,820 --> 00:09:02,220 and then on that we want to call then, 160 160 00:09:02,220 --> 00:09:04,453 and then basically with all of this. 161 161 00:09:06,370 --> 00:09:08,523 So let's grab it here. 162 162 00:09:12,180 --> 00:09:16,520 And that, of course, we are missing 163 163 00:09:18,650 --> 00:09:20,353 the callback function itself here, 164 164 00:09:23,640 --> 00:09:26,733 so that should end somewhere here, 165 165 00:09:27,950 --> 00:09:31,263 and, well, apparently, it doesn't. 166 166 00:09:34,610 --> 00:09:39,480 Maybe like this, and yes, that's correct. 167 167 00:09:39,480 --> 00:09:41,170 All right, now in order 168 168 00:09:41,170 --> 00:09:44,650 to actually make this function her really generic, 169 169 00:09:44,650 --> 00:09:47,647 we do not want to hard code the error message, 170 170 00:09:47,647 --> 00:09:51,120 but instead, we want to pass the message in. 171 171 00:09:51,120 --> 00:09:53,900 So let's say error message, 172 172 00:09:53,900 --> 00:09:56,033 and we can set a nice default value. 173 173 00:09:57,470 --> 00:10:01,320 So let's say something went wrong, 174 174 00:10:01,320 --> 00:10:03,580 which again is very generic, 175 175 00:10:03,580 --> 00:10:07,030 and so here, inside of this, we then want 176 176 00:10:09,560 --> 00:10:12,060 the error message that we passed in, 177 177 00:10:12,060 --> 00:10:16,010 and along with response dot status. 178 178 00:10:16,010 --> 00:10:20,941 Okay, and now all we need to do is to return all of this. 179 179 00:10:20,941 --> 00:10:22,430 And so like this, 180 180 00:10:22,430 --> 00:10:26,720 this getJSON function will actually return a promise. 181 181 00:10:26,720 --> 00:10:29,585 And so this is then just like any other promise 182 182 00:10:29,585 --> 00:10:32,460 that we can call here in our chain, 183 183 00:10:32,460 --> 00:10:35,233 and basically replace all of this. 184 184 00:10:36,740 --> 00:10:41,563 So just so we can keep this code, I'm gonna copy it. 185 185 00:10:42,479 --> 00:10:46,680 And so you can then keep this code here, 186 186 00:10:46,680 --> 00:10:50,480 basically as a reference for when you need 187 187 00:10:50,480 --> 00:10:53,770 to study it again, okay. 188 188 00:10:53,770 --> 00:10:57,300 But again, I will now go ahead and take everything 189 189 00:10:57,300 --> 00:11:01,247 that we just nicely encapsulated into our getJSON function, 190 190 00:11:01,247 --> 00:11:03,313 and simply replace this. 191 191 00:11:05,510 --> 00:11:10,510 So getJSON, and then the URL is this one, 192 192 00:11:14,260 --> 00:11:18,533 and the error message is country not found, now, right. 193 193 00:11:22,840 --> 00:11:25,603 And so now, we can take away all of this. 194 194 00:11:27,590 --> 00:11:30,080 So this is already in our get JSON function, 195 195 00:11:30,080 --> 00:11:32,363 and so we don't need this. 196 196 00:11:34,440 --> 00:11:37,940 All right, and now the same down here. 197 197 00:11:37,940 --> 00:11:40,800 Instead of fetch, we can get JSON, 198 198 00:11:40,800 --> 00:11:45,440 and then we don't need this done here. 199 199 00:11:45,440 --> 00:11:49,723 And again, the error message is country not found. 200 200 00:11:53,750 --> 00:11:57,923 Okay, and so let's get rid of this, now, right. 201 201 00:12:02,430 --> 00:12:04,041 So let's check here, 202 202 00:12:04,041 --> 00:12:07,980 and indeed, we get, again, country not found 203 203 00:12:07,980 --> 00:12:10,823 with code 400 because of this one. 204 204 00:12:13,200 --> 00:12:15,010 So that's working great, 205 205 00:12:15,010 --> 00:12:16,460 but there's still one more thing 206 206 00:12:16,460 --> 00:12:19,650 that we need to do, which is to handle the fact 207 207 00:12:19,650 --> 00:12:22,550 that sometimes there might be no neighbor. 208 208 00:12:22,550 --> 00:12:24,570 So right now, what we're doing here when there 209 209 00:12:24,570 --> 00:12:27,544 is no neighbor, is to simply return, 210 210 00:12:27,544 --> 00:12:31,460 but as I mentioned before, that doesn't really do anything. 211 211 00:12:31,460 --> 00:12:36,460 So let me just try here, a country that has no neighbors. 212 212 00:12:36,694 --> 00:12:41,260 So let's say Australia, because that is an island, 213 213 00:12:41,260 --> 00:12:45,465 and so here again, we get cannot read property flag 214 214 00:12:45,465 --> 00:12:48,515 of undefined, and so that is happening, 215 215 00:12:48,515 --> 00:12:52,593 because it is trying to render a country that doesn't exist. 216 216 00:12:55,080 --> 00:12:58,951 Okay, so again, it's because of this neighbor, 217 217 00:12:58,951 --> 00:13:03,390 and just to make sure, to illustrate my point here, 218 218 00:13:03,390 --> 00:13:06,820 you see that the neighbor is indeed undefined. 219 219 00:13:06,820 --> 00:13:08,400 And so what we want to do here 220 220 00:13:08,400 --> 00:13:11,815 is to simply just like before, throw a new error 221 221 00:13:11,815 --> 00:13:14,103 that will then get caught down here 222 222 00:13:14,103 --> 00:13:17,593 in our catch handler, right. 223 223 00:13:20,390 --> 00:13:25,390 So throw new error, no neighbor, found, 224 224 00:13:29,180 --> 00:13:31,860 and that's a lot better. 225 225 00:13:31,860 --> 00:13:34,680 So now, this is a real error message 226 226 00:13:34,680 --> 00:13:37,570 that actually makes sense to the user. 227 227 00:13:37,570 --> 00:13:39,976 Of course, this could be all a bit better, 228 228 00:13:39,976 --> 00:13:43,080 but this is just a demonstration anyway, 229 229 00:13:43,080 --> 00:13:43,913 but I think that 230 230 00:13:43,913 --> 00:13:47,660 it nicely demonstrate how we can create a real error message 231 231 00:13:47,660 --> 00:13:49,860 that does actually make sense. 232 232 00:13:49,860 --> 00:13:51,860 And again, that is super important 233 233 00:13:51,860 --> 00:13:54,980 for any user interface that you're building, 234 234 00:13:54,980 --> 00:13:58,710 because in web applications like this very small one, 235 235 00:13:58,710 --> 00:14:01,770 errors will happen, that is just guaranteed, 236 236 00:14:01,770 --> 00:14:04,200 and so your application needs to be ready, 237 237 00:14:04,200 --> 00:14:06,825 and needs to be prepared for that. 238 238 00:14:06,825 --> 00:14:10,930 All right, so let's now quickly recap here. 239 239 00:14:10,930 --> 00:14:13,786 And I think that the big takeaway from this lecture 240 240 00:14:13,786 --> 00:14:17,124 is that whenever we want to create some error 241 241 00:14:17,124 --> 00:14:19,430 that we want to handle down here, 242 242 00:14:19,430 --> 00:14:22,833 in the catch handler, all we need to do is to throw, 243 243 00:14:22,833 --> 00:14:26,990 and create a new error, just like we did here. 244 244 00:14:26,990 --> 00:14:30,260 And of course, we can do that for multiple reasons. 245 245 00:14:30,260 --> 00:14:32,660 So in this case, here, we did it simply 246 246 00:14:32,660 --> 00:14:36,520 because in the situation, no neighbor can be found. 247 247 00:14:36,520 --> 00:14:39,750 And so that is a good reason to display an error message 248 248 00:14:39,750 --> 00:14:41,097 on the user interface, 249 249 00:14:41,097 --> 00:14:44,983 and since we do that down here in our error handler, 250 250 00:14:46,230 --> 00:14:50,080 the best way of doing that is to indeed throw an error. 251 251 00:14:50,080 --> 00:14:51,472 And remember that this works, 252 252 00:14:51,472 --> 00:14:55,760 because throwing an error inside of this callback function 253 253 00:14:55,760 --> 00:15:00,120 of this then method will immediately reject this promise. 254 254 00:15:00,120 --> 00:15:03,190 And so then that rejected promise will travel down 255 255 00:15:03,190 --> 00:15:07,880 the chain until it is eventually caught somewhere. 256 256 00:15:07,880 --> 00:15:10,608 So again, in this case, it is right here 257 257 00:15:10,608 --> 00:15:12,980 in this catch handler. 258 258 00:15:12,980 --> 00:15:15,700 So when working with real applications 259 259 00:15:15,700 --> 00:15:17,760 in the real world, really make sure 260 260 00:15:17,760 --> 00:15:19,670 to keep this technique in mind, 261 261 00:15:19,670 --> 00:15:21,483 because it's really important. 23099

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.