CodeGym /Java Blog /Random /Lumang Antas 09
John Squirrels
Antas
San Francisco

Lumang Antas 09

Nai-publish sa grupo

Kaalaman vs. Kasanayan

Lumang Antas 09 - 1Itinuro sa amin ng kolehiyo na walang malaking pagkakaiba sa pagitan ng teorya at kasanayan. Well, tiyak na naiintindihan mo na hindi pareho. Ngunit hindi mo nakikita ang pangunahing pagkakaiba. Gayunpaman mayroong isa. Karamihan sa mga tao ay naglalagay ng equality sign sa pagitan ng "Alam ko" at "Kaya ko". ikaw ba? Paano ang tungkol sa ilang mga halimbawa?
  1. Alam kong masama para sa akin ang paninigarilyo, ngunit naninigarilyo ako.
  2. Alam kong masama para sa akin ang fast food, pero kinakain ko ito.
  3. Alam ko ang mga regulasyon sa trapiko ngunit hindi ako marunong magmaneho.
  4. Alam kong maganda ang jogging para sa akin pero hindi ako nagjo-jogging sa umaga.
Kadalasan nangyayari na ang mga tao ay kumukuha ng "alam ko" para sa "kaya ko". Isa itong magandang halimbawa sa mga regulasyon sa trapiko. Kung alam ng isang tao ang mga regulasyon at alam, kung paano magmaneho, nangangahulugan ba ito na maaari siyang magmaneho? Hindi. Paano kung sa tingin niya ay marunong siyang magmaneho? Kaya bakit kailangan niya ng isang instruktor - alam na niya ang lahat. Kapag sigurado kang alam mo na ang lahat, malamang na wala kang matutunang bago. At kung sigurado kang alam mo kung paano gawin ang lahat, hindi ka mag-aaral. Ang isang pag-iisip na tulad nito ay hindi kahit na sa iyong isip. At nangangahulugan iyon na mapapalampas mo ang lahat ng magagandang pagkakataon upang matuto ng isang bagay. Ang karaniwang kolehiyo ay nagbibigay lamang sa iyo ng kaalaman; kailangan mong kumuha ng mga kasanayan sa iyong sarili. Pero anong naririnig ko? Nagkaroon ka na ba ng pagsasanay bukod sa teorya sa iyong kolehiyo? Ok, kung nag-aral ka sa physics faculty, gumawa ng gumaganang modelo ng isang steam engine na may kahusayan na hindi bababa sa 20%. I bet alam mo kung paano gawin ito, ngunit hindi mo talaga magagawa, tama ba ako? Ikaw ay isang chemist ? Gumawa ng walang usok na pulbos. Alam mo kung paano, pero hindi mo kaya, ha? Mathematician, ikaw ba? Kalkulahin ang tilapon ng isang artilerya shell. Huwag kalimutang isaalang-alang ang hugis ng shell. Ang mga tuldok sa matematika ay hindi lumilipad sa totoong buhay. At walang mga spherical na kabayo. Lumang Antas 09 - 2Biyologo? Ihiwalay ang penicillin. Ang amag na ito ay lumalaki sa mga melon, kaya alam mo. Alam mo kung paano - kahanga-hanga! kaya mo ba? ekonomista?Gumawa ng pagtataya ng pagtaas ng presyo sa langis. Tapos na? At ngayon gawin itong $2,000 o $200,000 sa isang taon batay sa iyong hula. Naglaro ka na ba sa FOREX? Para sa totoong pera? O alam mo lang kung ano ito? Pang-internasyonal na ekonomiya? Kahanga-hanga! Saan ako magbubukas ng isang kumpanya sa labas ng bansa? Sa Hong-Cong, Ireland o sa USA. Bakit? Kahit na alam mo iyon, na kung saan ay nagdududa, halos hindi mo magagawa, dahil hindi mo pa talaga nagawa ito. Wala kang kahit katiting na ideya kung paano ito gagawin. Oh, hindi ka nag-aral niyan sa kolehiyo? Anong karapatan ko para bigyan ka ng mga gawaing hindi mo handa? Dahil ito ang mga gawain ng totoong buhay. IS na kasanayang ito , ang lahat ng napag-aralan mo sa kolehiyo ay: mga spherical na kabayo, perpektong kompetisyon – wala sa mga ito ang umiiral sa totoong buhay. Pero bakit nakalimutan kong banggitinespesyalista sa marketing ? Ano ang pinakamahusay na paraan upang gastusin ang aking $500 upang mas maraming tao hangga't maaari ang makaalam tungkol sa aking mga lektura? Sa advertisement? Alam mo ba na hindi lang ang classic na advertising ang luma na, kundi pati na rin ang konsepto ng USP (unique selling proposition), na sigurado akong itinuro sa iyo noong kolehiyo bilang halos natatanging panlunas sa lahat. Kalimutan mong may alam ka. Tanungin ang iyong sarili - ano ang maaari kong gawin? Kapaki-pakinabang, ibig kong sabihin? Isang bagay na babayaran ng mga tao? Magandang pera, ibig kong sabihin? Kaya mga kaibigan, ipahayag natin ang pasasalamat sa napakagandang kurso gaya ng CodeGym. Dahil dito hindi mo lang malalaman kung paano magprogram, ngunit talagang magagawa mo ito. Makakakuha ka rin ng trabaho at kumita ng magandang pera sa loob ng ilang taon. Sana ay sapat na ang perang ito para mamuhay ng maganda at komportable. Sasabihin ko itong muli, para tandaan mo: hindi mahalaga kung ano ang alam mo. Ang tanging bagay na mahalaga ay kung anong mga kapaki-pakinabang na kasanayan ang mayroon ka, ang mga taong sabik na bayaran ka. Ang mas maaga mong maunawaan ito, mas mabuti.

Naabot mo ang isang bagong antas

Antas 9

Lumang Antas 09 - 3

1 Risha, Stack trace

Lumang Antas 09 - 4- Hoy! Ngayon sasabihin ko sa iyo kung ano ang stack trace. Ngunit hayaan mo muna akong ipaliwanag sa iyo kung ano ang stack. - Isipin ang isang stack ng mga papeles - mga takdang-aralin para sa isang tiyak na klerk. Maaaring maglagay ng bagong assignment sa tuktok ng stack, at kukuha siya ng assignment mula sa tuktok ng stack. Kaya, ang mga takdang-aralin ay gagawin hindi sa isang first-come. Sa tuwing kinukuha ng klerk ang assignment na huli. Ang ganitong istraktura ng koleksyon ay tinatawag na stack . - Sa Java, mayroong isang espesyal na koleksyon - Stack. Ang koleksyon na ito ay may mga pamamaraan na «magdagdag ng elemento» at «kunin (kunin/alisin) ang isang elemento». Tulad ng alam mo na, ang huling elementong idinagdag ay kukunin muna. - Hum. Hindi naman mahirap, I guess. - Ayos. Pagkatapos ay hayaan mo akong ipaliwanag kung ano ang isang stack traceay. - Isipin na sa Java function А ay tumatawag sa function B , at ang huli ay tumatawag sa function C , na, sa turn nito, ay tumatawag sa function D . Kaya, upang lumabas sa function B , kailangan mo munang lumabas sa function C , at para magawa ito kailangan mong lumabas sa function D . Ito ay halos kapareho sa isang stack. - At ano ang pagkakatulad? - Sa stack, para makarating sa isang partikular na assignment, kailangan mo ring kumpletuhin ang lahat ng assignment na inilagay sa itaas. - Well, ito ay medyo isang pagkakatulad, ngunit hindi ako sigurado kung naiintindihan ko ang lahat ng tama. - Tumingin dito. Sa Java ang isang stack ay isang hanay ng mga elemento. Ito ay tulad ng mga sheet ng papel sa isang stack. Upang kunin ang pangatlo mula sa itaas, dapat mong kunin ang pangalawang sheet, ngunit bago iyon kailangan mong kunin ang una. Maaari mong palaging ilagay at kunin ang mga sheet, ngunit maaari mong ilagay lamang ang mga ito sa itaas at kumuha lamang mula sa itaas. Ang parehong naaangkop sa function na tawag. Tinatawag ng Function А ang function B , ang huli ay tumatawag sa function C . Upang lumabas sa А , kailangan mo munang lumabas sa B , at para magawa ito kailangan mong lumabas sa C . - Sandali. Kung nakuha ko ito ng tama, ang buong stack ay lalabas sa «lamang ang huling sheet na inilagay sa stack ang maaaring kunin» at «una, ang huling tinatawag na function ay dapat lumabas». Ganoon ba? - Oo. Kaya, ang pagkakasunod-sunod ng mga function na tawag ay ang «function call stack», o simpleng «call stack». Dapat munang wakasan ang function na tinatawag na huling. Tingnan natin ang halimbawa: Lumang Antas 09 - 5- OK. Ang lahat ay malinaw sa function na tawag, sa palagay ko. Ngunit ano ito StackTraceElement ? - Ang Java virtual machine ay nag-log ng lahat ng mga function na tawag. Para sa layuning ito mayroon itong isang espesyal na koleksyon - stack. Kapag tumawag ang isang function sa isa pa, naglalagay ang JVM ng bagong elementong StackTraceElement sa stack na ito. Kapag natapos ang function, ang elemento ay tatanggalin mula sa stack. Kaya, ang stack na ito ay palaging nag-iimbak ng up-to-date na impormasyon tungkol sa kasalukuyang estado ng «function call stack». - Bawat StackTraceElementnaglalaman ng impormasyon tungkol sa tinatawag na pamamaraan. Para makuha mo ang pangalan ng paraang ito gamit ang getMethodName . - Ang halimbawa sa itaas ay nagpapakita nito:
  1. Kunin ang "call stack":
  2. Ulitin ang array gamit ang loop for-each . Sana hindi mo ito nakakalimutan.
  3. I-print ang mga pangalan ng paraan sa System.out .
- Isang kawili-wiling bagay, at tila madali. Salamat, Risha!

2 Diego, Gawain sa stack trace display

- Hoy, Amigo! Narito ang isang maliit na gawain upang ipakita sa screen ang isang stack trace.
Mga gawain
1 Dapat ibalik ng bawat pamamaraan ang StackTrace nito
Sumulat ng limang pamamaraan na tumatawag sa isa't isa. Dapat ibalik ng bawat pamamaraan ang StackTrace nito.
2 StackTrace muli
Sumulat ng limang pamamaraan na tumatawag sa isa't isa. Dapat ibalik ng bawat paraan ang pangalan ng paraan ng tumatawag nito. Maaari kang makakuha ng paraan ng tumatawag gamit ang StackTrace.
3 Dapat ibalik ng pamamaraan ang numero ng linya ng code na tinawag ang pamamaraang ito mula sa
Sumulat ng limang pamamaraan na tumatawag sa isa't isa. Dapat ibalik ng bawat pamamaraan ang numero ng linya ng code kung saan tinawag ang pamamaraang ito. Gamitin ang elemento ng function.getLineNumber() .
4 Stack trace ng 10 tawag
Sumulat ng code para makakuha ng stack trace ng 10 tawag.
5 Ang pamamaraan ay dapat magbalik ng isang resulta - ang stack trace depth nito
Sumulat ng isang paraan na nagpapakita at nagbabalik ng stack trace depth nito. Ang lalim ng stack trace ay ang bilang ng mga pamamaraan nito (ang bilang ng mga elemento sa listahan).

3 Elly, Mga Error at Exceptions

- Hoy, Amigo! Ngayon mayroon tayong isang napaka-kagiliw-giliw na aralin. Sasabihin ko sa iyo ang tungkol sa mga pagbubukod. Ang pagbubukod ay isang espesyal na mekanismo upang makontrol ang mga error sa programa. Narito ang ilang halimbawa ng mga error na maaaring mangyari sa programa:
  1. Sinusubukan ng program na magsulat ng isang file sa buong disk.
  2. Sinusubukan ng programa na tumawag ng isang paraan ng isang variable na nag-iimbak ng null reference.
  3. Sinusubukan ng programa na hatiin ang isang numero sa pamamagitan ng 0.
Ang mga pagkilos na ito ay nagreresulta sa isang error. Kadalasan, ito ay humahantong sa pagsasara ng isang programa - walang punto upang ipagpatuloy ang pagpapatupad ng code. - Bakit ganun? - Mayroon bang anumang kahulugan upang iikot ang gulong kapag ang kotse ay bumabagsak sa bangin? - Ibig mo bang sabihin ay dapat na matapos ang programa? - Oo. Ganyan naman dati. Ang anumang error ay humantong sa pagwawakas ng isang programa. - Ito ay isang napakatalino na desisyon. - Hindi ba mas mabuti na subukang magtrabaho? - Oo. Nag-type ka ng malaking text sa MS Word, na-save ito, hindi pa ito nai-save, ngunit sinasabi sa iyo ng program na OK ang lahat. At patuloy kang mag-type. Kalokohan, hindi ba? - Oo. - Pagkatapos ay nakaisip ang mga programmer ng isang kawili-wiling hakbang:ibinalik ng bawat function ang katayuan ng trabaho nito. 0 ay nangangahulugan na ang function ay gumana ayon sa nararapat, anumang iba pang halaga - na mayroong isang error : ang halagang ito ay isang error code. - Ngunit ang diskarte na ito ay may kawalan. Pagkatapos ng bawat (!) function na tawag kailangan mong suriin ang code (numero) na ibinalik ng function. Una, ito ay hindi maginhawa: ang error-handling code ay bihirang naisakatuparan, ngunit palagi mo itong kailangang isulat. Pangalawa, ang mga pag-andar mismo ay madalas na nagbabalik ng iba't ibang mga halaga - ano ang gagawin sa kanila? - Oo. Yun sana ang itatanong ko. - Pagkatapos ay dumating ang isang magandang kinabukasan - lumitaw ang mga pagbubukod at paghawak ng error. Narito kung paano ito gumagana:
  1. Kapag naganap ang isang error, ang Java virtual machine ay lumilikha ng isang espesyal na bagay - isang pagbubukod - na naglalaman ng lahat ng impormasyon tungkol sa error. Para sa iba't ibang mga error mayroong iba't ibang mga pagbubukod.
  2. Pagkatapos ay pinipilit ng pagbubukod na ito ang programa na agad na matakpan ang kasalukuyang function, at ang susunod na function, hanggang sa lumabas ito sa pangunahing paraan. Pagkatapos nito, natapos ang programa. Tinatawag ng mga developer ng Java ang prosesong ito na "ibinabalik ang call stack".
- Ngunit sinabi mo na ang programa ay hindi lalabas para sigurado. - Tama iyon, dahil mayroong isang paraan upang mahuli ang pagbubukod. Kailanman at saanman mo kailangan, maaari kang magsulat ng isang espesyal na code upang mahuli ang mga pagbubukod na ito at gumawa ng isang mahalagang bagay. - Upang gawin ito, mayroong isang espesyal na construction try-catch . Tingnan kung paano ito gumagana: Lumang Antas 09 - 6- Bakit «Pagkatapos ng method1 na pagtawag. Hindi kailanman ipapakita» hindi ipapakita sa screen? - Natutuwa akong tinanong mo ito. Sa linya 25, mayroong dibisyon ng zero. Ito ay humahantong sa isang error - isang pagbubukod. Nilikha ng Java virtual machine ang object na ArithmeticException na naglalaman ng impormasyon ng error. Ang bagay na ito ay isang pagbubukod. - Isang exception ang naganap sa loob ng method method1() .Nagresulta ito sa agarang pagwawakas ng pamamaraan. Ito rin ay hahantong sa pagwawakas ng method main , kung walang try-catch block. - Kung ang isang exception ay nangyari sa loob ng try block, ito ay mahuhuli sa catch block. Ang natitirang code sa block try ay hindi isasagawa, ang execution ng block catch ay magsisimula kaagad. - Hindi ko masyadong maintindihan. - Sa madaling salita, ang code na ito ay gumagana tulad nito:
  1. Kung may nangyaring exception sa loob ng try block, hindi na ipapatupad ang code sa block na ito, ngunit magsisimula na ang execution ng block catch .
  2. Kung walang eksepsiyon na nangyari, ang try block ay isasagawa hanggang sa katapusan , at ang catch ay hindi kailanman isasagawa .
- Ahem! - Isipin na pagkatapos ng bawat tawag sa pamamaraan ay tinitingnan namin kung ang tinatawag na pamamaraan ay tinapos nang mag-isa o dahil sa pagbubukod. Kung may exception, magsisimulang isagawa ng JVM ang block catch kung available ito, at kukuha ng exception. Kung walang catch block, tatapusin ng JVM ang kasalukuyang pamamaraan. Pagkatapos ay magsisimula ang parehong tseke sa pamamaraan na tinatawag na kasalukuyang pamamaraan. - Ngayon sa tingin ko nakuha ko ito. - Ayos lang. - At ano ang Exception sa loob ng catch block? - Ang lahat ng mga exception ay mga klase na minana mula sa klase Exception. Mahuhuli natin ang alinman sa mga ito sa pamamagitan ng pagtukoy sa klase nito sa catchblock, o lahat ng mga ito nang sabay-sabay sa pamamagitan ng pagtukoy ng isang karaniwang parent class Exception. Pagkatapos, mula sa variable na e (iniimbak ng variable na ito ang reference ng isang exception object) maaari mong makuha ang lahat ng kinakailangang impormasyon tungkol sa error. - Malaki! At paano kung sa aking pamamaraan ay magkaroon ng iba't ibang mga pagbubukod, maaari ko bang pangasiwaan ang mga ito sa iba't ibang paraan? - Kailangan mo. Magagawa mo iyan tulad nito: Lumang Antas 09 - 7- Ang try block ay maaaring maglaman ng maramihang catch blocks, bawat isa ay makakahuli ng mga exception sa uri nito. - Umph. Well, medyo nakuha ko na. Syempre, hindi ako magsusulat ng ganito sa sarili ko. Gayunpaman, hindi ako matatakot kung matugunan ko ang naturang code.

4 Elly, RuntimeException, throws

Lumang Antas 09 - 8- Nagpasya akong maglabas ng isa pang paksa ngayon. Sa Java, ang lahat ng mga pagbubukod ay nahahati sa dalawang uri – kinokontrol/nasuri at hindi nakontrol/hindi nasuri . Ang mga may check na exception ay dapat mahuli, ang hindi naka-check ay maaaring mahuli ngunit hindi iyon kinakailangan . - Posible bang maghagis ng mga pagbubukod sa isang code sa layunin? - Sa iyong code, maaari kang maghagis ng mga pagbubukod sa iyong sarili. Maaari mo ring isulat ang iyong sariling mga pagbubukod. Ngunit kami ay malalim sa butas na ito mamaya. Ngayon, alamin natin kung paano magtrabaho kasama ang mga pagbubukod na itinapon ng Java virtual machine. - OK. - Kung exception ang ClassNotFoundException at FileNotFoundExceptionay itinapon (lumitaw) sa isang pamamaraan, kailangang tukuyin ng programmer ang mga ito sa lagda ng isang pamamaraan (header ng pamamaraan). Sinusuri ang mga naturang pagbubukod . Iyan ang karaniwang hitsura nito: Lumang Antas 09 - 9- Kaya, nagsusulat lang kami ng mga throws at naglilista ng mga pagbubukod na pinaghihiwalay ng mga kuwit. tama? Ganoon ba? - Oo. Ngunit may isa pang kawili-wiling bagay. Upang ma-compile ang halimbawa sa ibaba, ang paraan na tumatawag sa method1() ay dapat makuha ang mga pagbubukod na ito o itapon ang mga ito pasulong. Kung gusto mong itapon ang may check na exception pasulong kailangan mong tukuyin ito sa header ng method . - Muli, kung sa pangunahing pamamaraan, gusto mong tumawag sa isang paraan na mayroong sa header na parirala nito ay naghagis ng FileNotFoundException, ...pagkatapos ay kailangan mong gawin ang isa sa dalawang bagay na ito:
  1. para mahuli ang mga exception na FileNotFoundException, …
    Kakailanganin mong balutin ang code kung saan tatawag ka ng isang mapanganib na paraan na may try-catch block
  2. hindi upang mahuli ang mga pagbubukod na FileNotFoundException, ...
Kakailanganin mong idagdag ang mga pagbubukod na ito sa listahan ng mga throws ng iyong method main . - Bibigyan mo ba ako ng isang halimbawa? - Tumingin dito: Lumang Antas 09 - 10- Ang halimbawang ito ay hindi isasama, dahil tinatawag ng pangunahing pamamaraan ang pamamaraang method1(), na nagtatapon ng mga eksepsiyon na dapat mahuli. - Upang mai-compile ang halimbawa, kailangan mong magdagdag ng exception handling sa method main . Magagawa mo ito sa dalawang paraan: Lumang Antas 09 - 11- At dito nahuli namin ito gamit ang try-catch : Lumang Antas 09 - 12- Ito ay nagiging mas malinaw, ngunit napakaliit. - Tingnan ang halimbawa sa ibaba: Lumang Antas 09 - 13- Mayroon pa ring exception - RuntimeException at mga klase na minana mula rito.Hindi kinakailangang hulihin o itapon ang mga ito. Ang mga ito ay walang check na mga exception. Ang mga pagbubukod na ito ay itinuturing na mahirap hulaan, kaya halos imposibleng hulaan ang kanilang paglitaw. Maaari mong gawin ang parehong mga bagay sa kanila, ngunit hindi na kailangang tukuyin ang mga ito sa mga throw .

5 Risha, Rolling the call stack, kung paano ito gagawin sa mga exception

- Gusto kong sabihin sa iyo ng kaunti pa tungkol sa kung paano gumagana ang mga pagbubukod. Ang halimbawa sa ibaba ay nagpapaliwanag na: Lumang Antas 09 - 14- Hindi ko ito naiintindihan. - Ok. Ipapaliwanag ko kung ano ang nangyayari. - Sa halimbawa sa kaliwa, tinatawag namin ang ilang mga pamamaraan sa pagkakasunud-sunod ng chain. Sa method2() partikular kaming lumikha at magtapon ng exception (upang magsimula ng error). - Ang halimbawa sa kanan ay nagpapakita kung ano ang nangyayari. Tingnan ang method2() . Iyan ang nagiging pagbabago ng paglikha ng exception: gumawa kami ng object ng uri ng RuntimeException , iimbak ito sa isang espesyal na variable exception at agad na lumabas sa pamamaraan – return . - Sa method1 , pagkatapos ng tawag ng method2 may check,kung may exception o wala; kung mayroong isang pagbubukod, pagkatapos ay agad na magwawakas ang method1. Implicitly na ginagawa ang pagsusuring ito pagkatapos tawagan ang bawat (!) Java method. - Wow! - Eksakto. - Sa column sa kanan sa method main isinulat ko kung ano ang mangyayari kapag ang isang exception ay nakuha ng try-catch block. Kung walang pagbubukod, ang code ay magpapatuloy sa pagpapatupad tulad ng binalak. Kung mayroong isang pagbubukod sa uri na tinukoy sa catch , pagkatapos ay pinangangasiwaan namin ito. - At ano ang ibig sabihin ng throw and instanceof ? - Tingnan ang huling linya sa kaliwang itapon ang bagong (mga) RuntimeException. Sa ganitong paraan kami ay gumagawa at nagtatapon ng exception. Ito ay isang halimbawa lamang. Hindi namin gagawin ito sa ngayon. - Gamit ang command na « а instanceof B » sa kanang bloke sinusuri namin kung ang object a ay may uri B . Iyon ay, kung ang bagay na nakaimbak sa variable exception, ay may uri na RuntimeException . Ito ay isang lohikal na pagpapahayag. - Well, medyo lumilinaw na.

6 Diego, Exception catch task

- Tumingin dito! Si Tiyo Diego ay nagdala ng ilang gawain sa paghuli para sa iyo. Sana swertehin ka. Sa tingin ko kakailanganin mo ito. Heh. Lumang Antas 09 - 15- Hoy, Amigo! Narito ang ilang mga kawili-wiling exception catch tasks.
Paghuli ng mga gawain
1 1. Exception kapag nagpapatakbo gamit ang mga numero
Mahuli ang exception na nangyayari kapag pinapatakbo ang code:
int a = 42 / 0;
Ipakita ang pagbubukod sa screen, na tinutukoy ang uri nito
2 2. Exception kapag nagpapatakbo gamit ang mga string
Mahuli ang exception na nangyayari kapag pinapatakbo ang code:
String s = null;
String m = s.toLowerCase();
Ipakita ang pagbubukod sa screen, na tinutukoy ang uri nito.
3 3. Exception kapag nagpapatakbo gamit ang mga arrays
Mahuli ang exception na nangyayari kapag pinapatakbo ang code:
int[] m = new int[2];
m[8] = 5;
Ipakita ang pagbubukod sa screen, na tinutukoy ang uri nito.
4 4. Exception kapag nagpapatakbo sa mga koleksyon ng Listahan
Mahuli ang exception na nangyayari kapag pinapatakbo ang code:
ArrayList<String> list = new ArrayList<String>();
String s = list.get(18);
Ipakita ang pagbubukod sa screen, na tinutukoy ang uri nito.
5 5. Exception kapag nagpapatakbo sa Map collections
Mahuli ang exception na nangyayari kapag pinapatakbo ang code:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(null, null);
map.remove(null);
Ipakita ang pagbubukod sa screen, na tinutukoy ang uri nito.
- Tip: magsulat muna ng program, pagkatapos ay tingnan kung anong exception ang nangyayari at pagkatapos noon ay baguhin ang code at mahuli ang exception na iyon.

7 Risha, Paano gumagana ang maraming catch

Lumang Antas 09 - 16- Ngayon, ilang mas kawili-wiling mga lektura. Gustong-gusto kong magturo. - Gusto kong sabihin sa iyo kung paano gumagana ang maraming catch . Sa totoo lang ito ay napaka-simple: kapag may naganap na pagbubukod sa block try , ang pagpapatupad ng programa ay ililipat sa unang catch . - Kung ang uri na tinukoy sa mga panaklong ng block catch ay kapareho ng uri ng exception-object, magsisimula ang code execution sa loob ng {}. Kung hindi, pupunta tayo sa susunod na huli . Ang tseke ay paulit-ulit doon. - Kung wala nang mga catch block, ngunit ang exception ay hindi nahuli, ito ay itinapon pasulong, at ang kasalukuyang paraan ay naaantala. - Nakita ko. Ang catch na iyon ay isasagawa, ang uri nito ay tumutugma sa uri ng exception. - Oo, tama. Sa totoo lang, medyo mas kumplikado: Ang punto ay ang mga klase ay maaaring mamana sa isa't isa. Kung ang klase na «Cow» ay minana mula sa klase na «Animal», ang object ng uri ng «Cow» ay maaaring maimbak hindi lamang sa isang variable ng uri ng «Cow», ngunit sa isang variable ng uri ng «Animal» pati na rin. . - E ano ngayon? - Dahil ang lahat ng mga eksepsiyon ay minana mula sa mga klase ng Exception o RuntimeException (na minana rin mula sa Exception ), lahat sila ay maaaring mahuli gamit ang mga command catch (Exception e) o catch (RuntimeException e) . - E ano ngayon? - Ibig sabihin,una, maaari mong mahuli ang anumang exception gamit ang command catch(Exception e) . Pangalawa, ang pagkakasunud-sunod ng mga bloke ng catch ay mahalaga. Mga Halimbawa: - Ang ArithmeticException na nagreresulta mula sa paghahati ng 0 ay nahuli sa pangalawang catch. Lumang Antas 09 - 17- Sa halimbawa sa ibaba, ang ArithmeticException ay nakuha sa unang catch , dahil ang mga klase ng lahat ng mga exception ay minana mula sa Exception. Kaya, ang Exception ay nakakakuha ng anumang exception . Lumang Antas 09 - 18- Sa halimbawa sa ibaba, ang exception na ArithmeticException ay hindi nahuli, ngunit itinapon pasulong sa paraan ng pagtawag. Lumang Antas 09 - 19- Well, ito ay nagiging mas malinaw ngayon. Ang mga pagbubukod na ito ay hindi ganoon kadali. - Parang ganun lang. Sa katunayan, isa ito sa pinakasimpleng bagay sa Java. - Nag-aalinlangan ako kung matutuwa o maiinis ako tungkol dito...

8 Diego, Maramihang mga exception catch na gawain

- Hoy, Amigo! Kahapon nalasing ako at pinahirapan ng sobra ang iyong mga gawain, ngunit sana ay walang mabigat na damdamin sa iyong bahagi at malutas mo ang lahat ng ito? Ito ay para sa iyong sariling kapakanan. dito:
Mga gawain
1 1. Exceptions
May isang paraan na nagtatapon ng dalawang exception na minana mula sa Exception , at ang dalawa pang minana mula sa RuntimeException : NullPointerException , ArithmeticException , FileNotFoundException , at URISyntaxException .

Kailangan mong mahuli ang NullPointerException at FileNotFoundException , ngunit hindi para mahuli ang ArithmeticException at URISyntaxException . Paano ito gagawin?
2 2. Paghuli ng mga eksepsiyon
Mayroong tatlong eksepsiyon na sunud-sunod na minana mula sa Exception :
ang klase Exception1 ay nagpapalawak ng Exception
class Exception2 ay nagpapalawak ng Exception1
class Exception3 na nagpapalawak ng Exception2
May isang paraan, na inilalarawan bilang sumusunod:
public static void method1() throws Exception1, Exception2, Exception3

Sumulat ng catch harangan upang mahuli ang lahat ng tatlong Exception1 , Exception2 at Exception3
3 3. Pagkuha ng mga piling eksepsiyon
1. Alamin kung anong mga eksepsiyon ang itinapon ng pamamaraang BEAN.methodThrowExceptions . 2. Dapat tawagan
ng pamamaraang processExceptions() ang pamamaraang BEAN.methodThrowExceptions at pangasiwaan ang mga exception:
2.1. kung may naganap na pagbubukod na FileSystemException , pagkatapos ay i-log ito sa pamamagitan ng pagtawag sa pamamaraang BEAN.log at itapon
ang 2.2. kung may nangyaring exception na CharConversionException o anumang iba pang IOException , i-log lang ito sa pamamagitan ng pagtawag sa pamamaraang BEAN.log
3. Idagdag ang klase/uri ng exception na iyong ipinapasa sa 2.1. sa processExceptions()lagda ng pamamaraan.
4. Pangasiwaan ang natitirang exception sa method main() at i-log ito. Gamitin ang try..catch

Tip:
Kung nakuha mo ang exception na MyException , na hindi mo gustong mahuli, maaari mo itong ihagis gamit ang sumusunod na code:
catch (MyException e) {
throw e;
}
4 4. Pagkuha ng mga checked exception
Pangasiwaan ang lahat ng checked exception sa method processExceptions() .
Kailangan mong ipakita sa screen ang bawat may check na exception na naganap.
Maaari kang gumamit lamang ng isang bloke na pagsubok .
5 5. Pagkuha ng mga hindi naka-check na exception
Pangasiwaan ang lahat ng hindi na-check na mga exception sa method processExceptions() .
Kailangan mong ipakita sa screen ang isang stack trace ng bawat naganap na exception gamit ang pamamaraan printStack() .
Maaari kang gumamit lamang ng isang bloke na pagsubok .

9 Propesor, Lektura sa mga eksepsiyon

- Ngayon mayroon kaming isang napaka-kawili-wiling paksa - mga pagbubukod. Noong panahong iyon, kapag ang mga batang siyentipiko at programmer ay labis na nasasabik tungkol sa paksang ito... - Paumanhin, kailangan kong pumunta sa lab. Narito ang mga tala sa panayam. Sa tingin ko ikaw mismo ang makakaintindi nito. Dito: Java Exceptions (Oracle Documentation) Exception Handling sa Java (Java T point) Java - Exceptions Handling (tutorials point) Basic Java Exception Handling

10 Julio

- Amigo, ano sa palagay mo ang aralin ngayon? Hindi pa ba nagwowork out ang positron brain mo? Ang mga gawain ni Diego ay sapat na upang mapagod ang sinuman. Magbeer sandali tayo at magpahinga. Nakatayo ka pa ba?

11 Kapitan Squirrels

- Hello, sundalo! - Magandang umaga, ginoo! - Mayroon akong ilang kahanga-hangang balita para sa iyo. Narito ang isang mabilis na pagsusuri upang palakasin ang iyong mga kasanayan. Gawin ito araw-araw, at mapapahusay mo ang iyong mga kasanayan nang mabilis. Ang mga gawain ay espesyal na idinisenyo upang gawin sa Intellij IDEA.
Mga karagdagang gawain na gagawin sa Intellij Idea
1 1. Division by zero
Lumikha ng isang paraan public static void divisionByZero() , kung saan kailangan mong hatiin ang anumang numero sa zero, at ipakita sa screen ang resulta ng dibisyon.
I-wrap ang divisionByZero() method call sa isang try..catch . Ipakita sa screen ang exception stack trace gamit ang method exception.printStackTrace() .
2 2. Countdown mula 10 hanggang 0
Sumulat ng loop sa countdown mula 10 hanggang 0. Gamitin ang Thread.sleep(100) para maantala;
I-wrap ang sleep call sa isang try..catch .
3 3. I-wrap ang isang paraan sa isang try..catch
Basahin ang mga numero mula sa keyboard. Sumulat ng code para sa pagbabasa ng mga numero mula sa keyboard patungo sa isang hiwalay na paraan readData() .
I-wrap ang buong katawan ng pamamaraang ito (ang buong code sa loob ng readData() na pamamaraan, maliban sa deklarasyon ng listahan kung saan iimbak ang mga numero) sa isang try..catch .

Kung ang gumagamit ay nagpasok ng ilang teksto sa halip na maglagay ng isang numero, ang pamamaraan ay kailangang makuha ang pagbubukod at ipakita sa screen ang lahat ng mga numerong ipinasok dati.
Ipakita ang mga numero sa screen. Ang bawat numero ay dapat nasa isang bagong linya. Ang pagkakasunud-sunod ng mga numero ay dapat na tulad ng nasa input.
4 4. Date converter
Basahin mula sa keyboard ang isang petsa sa format na «08/18/2013»
Ipakita sa screen ang petsang iyon sa anyo ng «AUG 18, 2013».
Gamitin ang mga bagay na Petsa at SimpleDateFormat .
5 5. Mga patinig at katinig
Sumulat ng isang programa na nagbabasa ng linya mula sa keyboard.
Ang programa ay dapat magpakita sa screen ng dalawang string:
1) ang unang string ay dapat maglaman ng mga patinig
2) ang pangalawang string ay dapat maglaman ng mga consonant at mga bantas na character mula sa ipinasok na teksto.
Paghiwalayin ang mga character ayon sa mga puwang.

Halimbawang input:
Huminto tumingin makinig
Halimbawa output:
oooie
stplklstn
6 6. Ang kuwento ng Little Red Riding Hood
1. Mayroong limang klase: Red Riding Hood, lola, patty, woodcutter, lobo.
2. Ang bawat klase ay may dalawang field ng ArrayList type: pinatay at kinain.
3. Nalikha na ang mga kinakailangang bagay (hood, lola, ...).
4. Lumikha ng tamang relasyon (na kumain at pumatay kung sino) para makuha ang lohika ng «Little Red Riding Hood».
7 7. Move static modifies
Ilipat ang static modifiers para mag-compile ang code.
8 8. Listahan ng mga arrays ng mga numero
Lumikha ng isang listahan na ang mga elemento ay arrays ng mga numero. Idagdag sa listahan ang limang object array na may haba na 5, 2, 4, 7, 0, ayon sa pagkakabanggit. Punan ang mga array ng anumang data at ipakita ang mga ito sa screen.
9 9. Sampung pusa
Lumikha ng klase na Pusa na may field String name .
Lumikha ng diksyunaryo Map<String, Cat> , magdagdag ng 10 pusa sa modelong «Pangalan» - «Cat».
Kumuha mula sa Map ng Set ng mga pangalan at ipakita ang set sa screen.
- Ang mga gawaing iyon ay para sa mga gulay. Nagdagdag ako ng mga bonus na gawain na mas kumplikado. Para sa mga nangungunang baril lamang.
Mga gawaing bonus
1 1. Hindi nag-compile at tumatakbo ang program. Ayusin.
Gawain: Dapat basahin ng program mula sa keyboard ang dalawang pangalan ng file at kopyahin ang unang file sa lokasyong tinukoy ng pangalawang pangalan.
2 2. Magdagdag ng bagong functionality sa program.
Lumang Gawain: Dapat basahin ng program mula sa keyboard ang dalawang pangalan ng file at upang kopyahin ang unang file sa lokasyong tinukoy ng pangalawang pangalan.
Bagong gawain: Dapat basahin ng program mula sa keyboard ang dalawang pangalan ng file at upang kopyahin ang unang file sa lokasyong tinukoy ng pangalawang pangalan.

Kung ang file (na makokopya) na may tinukoy na pangalan ay hindi umiiral, ang programa ay dapat na ipakita sa screen ang mensahe na "Ang file ay hindi umiiral" at subukang basahin muli ang pangalan ng file mula sa console bago basahin ang pangalan ng pangalawang (destinasyon) file.
3 3. Pag-aaral at pagsasanay ng algorithm.
Basahin mula sa keyboard ang listahan ng mga salita at numero. Ipakita sa screen ang mga salita sa pataas na pagkakasunud-sunod at ang mga numero sa pababang pagkakasunud-sunod.

Halimbawang input:
Cherry
1
Bean
3
Apple
2
0
Pakwan

Halimbawang output:
Apple
3
Bean
2
Cherry
1
0
Pakwan
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION