All language subtitles for 013 Shopping Cart – Part 9_en
Afrikaans
Akan
Albanian
Amharic
Arabic
Armenian
Azerbaijani
Basque
Belarusian
Bemba
Bengali
Bihari
Bosnian
Breton
Bulgarian
Cambodian
Catalan
Cebuano
Cherokee
Chichewa
Chinese (Simplified)
Chinese (Traditional)
Corsican
Croatian
Czech
Danish
Dutch
English
Esperanto
Estonian
Ewe
Faroese
Filipino
Finnish
French
Frisian
Ga
Galician
Georgian
German
Greek
Guarani
Gujarati
Haitian Creole
Hausa
Hawaiian
Hebrew
Hindi
Hmong
Hungarian
Icelandic
Igbo
Indonesian
Interlingua
Irish
Italian
Japanese
Javanese
Kannada
Kazakh
Kinyarwanda
Kirundi
Kongo
Korean
Krio (Sierra Leone)
Kurdish
Kurdish (Soranî)
Kyrgyz
Laothian
Latin
Latvian
Lingala
Lithuanian
Lozi
Luganda
Luo
Luxembourgish
Macedonian
Malagasy
Malay
Malayalam
Maltese
Maori
Marathi
Mauritian Creole
Moldavian
Mongolian
Myanmar (Burmese)
Montenegrin
Nepali
Nigerian Pidgin
Northern Sotho
Norwegian
Norwegian (Nynorsk)
Occitan
Oriya
Oromo
Pashto
Persian
Polish
Portuguese (Brazil)
Portuguese (Portugal)
Punjabi
Quechua
Romanian
Romansh
Runyakitara
Russian
Samoan
Scots Gaelic
Serbian
Serbo-Croatian
Sesotho
Setswana
Seychellois Creole
Shona
Sindhi
Sinhalese
Slovak
Slovenian
Somali
Spanish
Spanish (Latin American)
Sundanese
Swahili
Swedish
Tajik
Tamil
Tatar
Telugu
Thai
Tigrinya
Tonga
Tshiluba
Tumbuka
Turkish
Turkmen
Twi
Uighur
Ukrainian
Urdu
Uzbek
Vietnamese
Welsh
Wolof
Xhosa
Yiddish
Yoruba
Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,090 --> 00:00:04,620
The last step is to bulletproof the application, we're going to make sure the application doesn't fail
2
00:00:04,620 --> 00:00:10,080
or crash no matter what happens right now, there are many places where unchecked exceptions could be
3
00:00:10,080 --> 00:00:14,810
thrown during the runtime and cross the application, but we can't allow that to happen.
4
00:00:15,300 --> 00:00:16,200
Let's run the app.
5
00:00:16,560 --> 00:00:22,650
And the first vulnerability is if the user enters the wrong and put the Atheros in input mismatch exception.
6
00:00:23,070 --> 00:00:26,610
And if we get an unchecked exception, it means we have to improve our code.
7
00:00:27,060 --> 00:00:31,860
And what we're missing is code that anticipates a scenario where the user may enter a value that is
8
00:00:31,860 --> 00:00:32,670
not an integer.
9
00:00:35,140 --> 00:00:41,710
So what I'll do is I'll apply conditional assignment here, I'll check if scanned on has next and if
10
00:00:41,710 --> 00:00:47,800
the next thing the user inputs is an integer, then we'll pick up the input using next and otherwise
11
00:00:47,800 --> 00:00:49,900
we'll assign it the value of 404.
12
00:00:50,410 --> 00:00:54,250
And how convenient is it that we already have a next line right here?
13
00:00:54,640 --> 00:00:58,570
Because if 404 returns, we still need to pick up the input.
14
00:00:58,570 --> 00:01:02,940
Otherwise things are going to get out of whack and next line can pick up anything.
15
00:01:02,950 --> 00:01:03,850
So that's perfect.
16
00:01:05,200 --> 00:01:09,130
Same thing here, if the next input that scanner reads is an integer.
17
00:01:11,740 --> 00:01:16,480
Then we'll pick it up, otherwise we'll just assign the value for for.
18
00:01:18,310 --> 00:01:23,160
And now before creating the object, I'll just say if either value is Foro for.
19
00:01:36,580 --> 00:01:38,380
Then just restart the wire loop.
20
00:01:40,960 --> 00:01:41,950
Rewriting the code.
21
00:01:48,830 --> 00:01:52,220
I'm going to say, don't know how beautiful.
22
00:01:55,280 --> 00:02:01,160
And the next vulnerability in the app is if the user index is outside the bounds of the array and the
23
00:02:01,160 --> 00:02:07,370
app throws an array index out of bounds, exception, unchecked exceptions are the result of badly written
24
00:02:07,370 --> 00:02:07,840
code.
25
00:02:07,850 --> 00:02:12,380
And what we're missing in the code is logic that anticipates the user indexing on a bounce.
26
00:02:17,480 --> 00:02:23,030
So what I'll do is I'll see if the aisle number is smaller than zero or bigger than six.
27
00:02:25,750 --> 00:02:28,210
Or if the column number is smaller than zero.
28
00:02:32,570 --> 00:02:33,710
Or bigger than two.
29
00:02:40,240 --> 00:02:45,550
Then the user is indexing outside the bounds of the array, so we have to restart the loop.
30
00:02:58,510 --> 00:03:04,600
If I index outside the bounds of the array, it just restarts the loop and doesn't crash, perfect.
31
00:03:05,750 --> 00:03:12,010
Last thing we might get is an illegal state exception if I try to remove from an empty cart, the app
32
00:03:12,010 --> 00:03:14,290
is going to throw an illegal state exception.
33
00:03:36,560 --> 00:03:41,330
This exception is thrown by the remove method, and that's because we shouldn't be calling the remove
34
00:03:41,330 --> 00:03:46,280
function when there's nothing in the cart that's just bad and I'm glad it crashed.
35
00:03:46,530 --> 00:03:48,430
It means we get to improve our code.
36
00:03:48,710 --> 00:03:52,040
So I'm going to add a method that returns a bullion named is empty.
37
00:03:59,550 --> 00:04:03,180
And it's going to return a boolean that indicates if the array list is empty.
38
00:04:10,490 --> 00:04:11,780
So back here, I'll say.
39
00:04:13,010 --> 00:04:13,880
If Kurt.
40
00:04:16,529 --> 00:04:17,100
Is empty.
41
00:04:17,640 --> 00:04:18,930
I'll restart the while loop.
42
00:04:31,940 --> 00:04:33,880
Try to remove from an empty cart.
43
00:04:35,640 --> 00:04:36,600
And we're all good.
44
00:04:39,270 --> 00:04:44,780
Now, what if I tried to check out an empty cart this time, the checkout method throws an illegal STD
45
00:04:44,790 --> 00:04:45,320
exception.
46
00:04:45,750 --> 00:04:49,680
That's because our app is calling checkout when there is nothing inside the cart.
47
00:04:49,680 --> 00:04:51,120
And that's just bad code.
48
00:04:51,120 --> 00:04:53,180
It's telling us to improve our code.
49
00:04:53,190 --> 00:04:54,750
So once again, will check.
50
00:04:57,470 --> 00:04:58,370
If Kurt.
51
00:05:00,010 --> 00:05:00,700
Is empty.
52
00:05:03,510 --> 00:05:05,010
Then restart the wire loop.
53
00:05:07,990 --> 00:05:12,790
And with this final line of code, I'm proud to say we're done building the shopping cart application,
54
00:05:13,280 --> 00:05:14,560
I'm going to run the app.
55
00:05:16,050 --> 00:05:20,660
And now I can just keep playing around with it with full confidence that it's always going to work.
56
00:05:22,530 --> 00:05:27,750
And it's going to keep letting me do my shopping, this app is really rewarding because it involves
57
00:05:27,750 --> 00:05:29,370
everything from two to you raise.
58
00:05:29,970 --> 00:05:33,990
We created objects of three different classes and we made them work together.
59
00:05:35,240 --> 00:05:40,510
We implemented exception handling, you learn how to write an equals method to compare it to objects,
60
00:05:41,300 --> 00:05:44,390
you've come this far and I hope you're proud of yourself.
5882
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.