CodeGym /Java Blog /Willekeurig /Oud niveau 09
John Squirrels
Niveau 41
San Francisco

Oud niveau 09

Gepubliceerd in de groep Willekeurig

Kennis versus vaardigheden

Oud niveau 09 - 1College leerde ons dat er geen groot verschil is tussen theorie en praktijk. U begrijpt vast wel dat dat niet hetzelfde is. Maar je ziet het wezenlijke verschil niet. Toch is er een. De meeste mensen plaatsen het gelijkheidsteken tussen "ik weet" en "ik kan". Zul jij? Wat dacht je van een paar voorbeelden?
  1. Ik weet dat roken slecht voor me is, maar ik rook.
  2. Ik weet dat fastfood slecht voor me is, maar ik eet het wel.
  3. Ik ken de verkeersregels, maar ik kan niet autorijden.
  4. Ik weet dat joggen goed voor me is, maar ik jog niet in de ochtend.
Het komt vaak voor dat mensen "ik weet" voor "ik kan" nemen. Het is een goed voorbeeld met verkeersregels. Als een persoon de regels kent en weet hoe hij moet rijden, betekent dit dan dat hij kan rijden? Nee. Wat als hij denkt dat hij kan autorijden? Dus waarom zou hij een instructeur nodig hebben - hij weet al alles. Als je zeker weet dat je alles al weet, leer je waarschijnlijk niets nieuws. En als je zeker weet dat je alles weet, ga je niet studeren. Zo'n gedachte komt niet eens in je op. En dat betekent dat je alle prachtige kansen mist om iets te leren. Gewoon college geeft je alleen kennis; je zult zelf vaardigheden moeten verwerven. Maar wat hoor ik? Heb je naast theorie ook praktijk gehad op je universiteit? Oké, als je gestudeerd hebt aan de natuurkundefaculteit, maak een werkend model van een stoommachine met een rendement van minimaal 20%. Ik wed dat je weet hoe het moet, maar je zult het niet echt kunnen, heb ik gelijk? Jij bent chemicus ? Maak rookloos poeder. Je weet hoe, maar je kunt het niet, ha? Wiskundige, ben jij? Bereken de baan van een artilleriegranaat. Vergeet niet rekening te houden met de vorm van de schelp. Wiskundige stippen vliegen niet in het echte leven. En er zijn geen bolvormige paarden. Oud niveau 09 - 2Bioloog? Isoleer penicilline. Deze schimmel groeit op meloenen, dus je weet het. Je weet hoe - geweldig! Kun je het? Econoom?Maak een prognose van de prijsgroei op olie. Klaar? En verander het nu in $ 2.000 of $ 200.000 per jaar op basis van uw prognose. Heb je ooit op FOREX gespeeld? Voor echt geld? Of weet je gewoon wat het is? Internationale economie? Schitterend! Waar open ik een offshore bedrijf? In Hong-Cong, Ierland of in de VS. Waarom? Zelfs als je dat weet, wat twijfelachtig is, zul je het nauwelijks kunnen, aangezien je het nog nooit hebt gedaan. Je hebt zelfs geen flauw idee hoe je het moet doen. Oh, heb je dat niet op de universiteit gestudeerd? Welk recht heb ik om je taken te geven waar je niet op voorbereid bent? Want dit zijn de taken van het echte leven. Deze IS-praktijk , alles wat je op de universiteit hebt gestudeerd, is: bolvormige paarden, perfecte competitie - niets daarvan bestaat in het echte leven. Maar waarom ben ik vergeten te vermeldenmarketingspecialist ? Wat is de beste manier om mijn $ 500 uit te geven, zodat zoveel mogelijk mensen van mijn lezingen weten? Op advertentie? Weet je dat niet alleen klassieke reclame al achterhaald is, maar ook het concept van USP (unique selling proposition), waarvan ik zeker weet dat je het op de universiteit hebt geleerd als bijna uniek wondermiddel. Vergeet dat je iets weet. Stel jezelf de vraag: wat kan ik doen? Nuttig, bedoel ik? Iets waar mensen geld voor zouden betalen? Goed geld, bedoel ik? Dus vrienden, laten we dankbaar zijn voor zo'n geweldige cursus als CodeGym. Hierdoor weet u niet alleen hoe u moet programmeren, maar kunt u het ook daadwerkelijk doen. Je zult ook in staat zijn om binnen een paar jaar een baan te krijgen en goed geld te verdienen. Ik hoop dat dit geld voldoende zal zijn om fijn en gezellig te leven. Ik zeg het nog een keer, zodat je onthoudt: het maakt niet uit wat je weet. Het enige dat ertoe doet, is welke nuttige vaardigheden je hebt, die mensen je graag willen betalen. Hoe eerder je dit begrijpt, hoe beter.

Je hebt een nieuw niveau bereikt

Niveau 9

Oud niveau 09 - 3

1 Risha, stapeltracering

Oud niveau 09 - 4- Hoi! Vandaag vertel ik je wat de stacktrace is. Maar laat me je eerst uitleggen wat de stapel is. - Stel je een stapel papieren voor - opdrachten voor een bepaalde klerk. Een nieuwe opdracht kan bovenop de stapel worden gelegd, en hij zal een opdracht van de bovenkant van een stapel nemen. Opdrachten worden dus niet gedaan op basis van wie het eerst komt. Elke keer neemt de griffier de opdracht die als laatste komt. Zo'n verzamelingsstructuur wordt een stapel genoemd . - In Java is er een speciale verzameling - Stack. Deze verzameling heeft methoden «voeg een element toe» en «haal (krijg/neem weg) een element». Zoals u al weet, wordt het laatst toegevoegde element als eerste genomen. - Brommen. Het is niet moeilijk, denk ik. - Prima. Laat me dan uitleggen wat een stacktracering isis. - Stel je voor dat in Java functie А functie B aanroept , en laatstgenoemde functie C aanroept , die op zijn beurt functie D aanroept . Dus om functie B te verlaten , moet u eerst functie C verlaten , en daarvoor moet u functie D verlaten . Dit lijkt sterk op een stapel. - En wat is de overeenkomst? - In de stapel, om bij een bepaalde opdracht te komen, moet je ook alle bovenaan gezette opdrachten voltooien. - Het is een beetje een analogie, maar ik weet niet zeker of ik alles goed begrijp. - Kijk hier. In Java is een stapel een verzameling elementen. Het is als vellen papier in een stapel. Om de derde van boven te pakken, moet je het tweede vel pakken, maar daarvoor moet je het eerste nemen. U kunt altijd lakens plaatsen en nemen, maar u kunt ze alleen op de bovenkant leggen en alleen van de bovenkant nemen. Hetzelfde geldt voor de functieaanroep. Functie А roept functie B aan , de laatste roept functie C aan . Om А te verlaten , moet u eerst B verlaten , en om dit te doen moet u C verlaten . - Wacht even. Als ik het goed heb, blijkt de hele stapel in "alleen het laatste vel dat op de stapel is gelegd kan worden genomen" en "eerst moet de laatst aangeroepen functie worden afgesloten". Is dat zo? - Ja. De volgorde van functieaanroepen is dus de «functieaanroepstapel», of kortweg «aanroepstapel». De laatst aangeroepen functie moet eerst worden beëindigd. Laten we naar het voorbeeld kijken: Oud niveau 09 - 5- OK. Alles is duidelijk met de functieaanroep, denk ik. Maar wat is dit StackTraceElement ? - Java virtual machine registreert alle functieaanroepen. Hiervoor heeft het een speciale collectiestapel. Wanneer een functie een andere aanroept, plaatst JVM een nieuw element StackTraceElement in deze stapel. Wanneer de functie eindigt, wordt het element uit de stapel verwijderd. Deze stapel slaat dus altijd up-to-date informatie op over de huidige status van de «function call stack». - Elk StackTraceElementbevat informatie over de aangeroepen methode. U kunt dus de naam van deze methode krijgen met behulp van getMethodName . - Het voorbeeld hierboven laat het zien:
  1. Verkrijg de «callstack»:
  2. Herhaal de array met behulp van de lus for-each . Ik hoop dat je het niet bent vergeten.
  3. Druk methodenamen af ​​naar System.out .
- Een interessant ding, en blijkbaar gemakkelijk. Dankjewel, Risha!

2 Diego, Taak op stacktrace-display

- Hé, Amigo! Hier is een kleine taak om een ​​stacktrace op het scherm weer te geven.
Taken
1 Elke methode moet zijn StackTrace Write vijf methoden teruggeven
die elkaar aanroepen. Elke methode moet zijn StackTrace retourneren.
2 StackTrace opnieuw
Schrijf vijf methoden die elkaar aanroepen. Elke methode moet de naam van de aanroepmethode teruggeven. U kunt de caller-methode verkrijgen met behulp van StackTrace.
3 De methode moet het regelnummer teruggeven van de code waarmee deze methode is aangeroepen
Schrijf vijf methoden die elkaar aanroepen. Elke methode moet het regelnummer retourneren van de code van waaruit deze methode is aangeroepen. Gebruik de functie element.getLineNumber() .
4 Stacktracering van 10 calls
Schrijf code om een ​​stacktracering van 10 calls te krijgen.
5 De methode moet een resultaat teruggeven - de diepte van de stacktrace.
Schrijf een methode die de diepte van de stacktrace weergeeft en teruggeeft. Stack trace depth is het aantal methoden (het aantal elementen in de lijst).

3 Elly, fouten en uitzonderingen

- Hé, Amigo! Vandaag hebben we een zeer interessante les. Ik zal je vertellen over uitzonderingen. Uitzondering is een speciaal mechanisme om fouten in het programma te controleren. Hier zijn enkele voorbeelden van fouten die kunnen optreden in het programma:
  1. Het programma probeert een bestand naar de volledige schijf te schrijven.
  2. Het programma probeert een methode aan te roepen van een variabele die de null-referentie opslaat.
  3. Het programma probeert een getal te delen door 0.
Deze acties resulteren in een fout. Meestal leidt dit tot het sluiten van een programma - het heeft geen zin om door te gaan met het uitvoeren van de code. - Waarom is dat? - Heeft het zin om aan het stuur te draaien als de auto van een klif valt? - Bedoel je dat het programma moet eindigen? - Ja. Zo was het vroeger. Elke fout leidde tot de beëindiging van een programma. - Het is een heel slimme beslissing. - Zou het niet beter zijn om te proberen door te werken? - Ja. Je hebt een enorme tekst in MS Word getypt, opgeslagen, het is niet opgeslagen, maar het programma vertelt je dat alles in orde is. En je typt verder. Gek, nietwaar? - Ja. - Toen kwamen programmeurs met een interessante zet:elke functie gaf de status van zijn werk terug. 0 betekende dat de functie werkte zoals het hoort, elke andere waarde - dat er een fout was : deze waarde was een foutcode. - Maar deze aanpak had een nadeel. Na elke (!) functieaanroep moest je de code (nummer) controleren die door de functie werd geretourneerd. Ten eerste was het onhandig: de foutafhandelingscode werd zelden uitgevoerd, maar je moest het altijd schrijven. Ten tweede geven de functies zelf vaak verschillende waarden terug - wat ermee te doen? - Ja. Dat is wat ik ging vragen. - Toen kwam er een mooie toekomst - uitzonderingen en foutafhandeling waren verschenen. Dit is hoe het werkt:
  1. Wanneer er een fout optreedt, maakt de virtuele Java-machine een speciaal object – een uitzondering – dat alle informatie over de fout bevat. Voor verschillende fouten zijn er verschillende uitzonderingen.
  2. Dan dwingt deze uitzondering het programma om de huidige functie onmiddellijk te onderbreken, en de volgende functie, totdat het de hoofdmethode verlaat. Daarna wordt het programma beëindigd. Java-ontwikkelaars noemen dit proces "rollback the call stack".
- Maar u hebt gezegd dat het programma niet zeker zal afsluiten. - Dat klopt, want er is een manier om de uitzondering op te vangen. Waar en wanneer je maar wilt, je kunt een speciale code schrijven om deze uitzonderingen op te vangen en iets belangrijks te doen. - Om dit te doen, is er een speciale constructie- try-catch . Kijk hoe het werkt: Oud niveau 09 - 6- Waarom «Na method1 bellen. Wordt nooit getoond» niet op het scherm weergegeven? - Ik ben blij dat je ernaar vroeg. In regel 25 is er een deling door nul. Dit leidt tot een fout – een uitzondering. Java virtual machine heeft het object ArithmeticException gemaakt met de foutinformatie. Dit object is een uitzondering. - Er is een uitzondering opgetreden in de methode method1() .Dit resulteerde in de onmiddellijke beëindiging van de methode. Het zou ook leiden tot het beëindigen van de methode main , als er geen try-catch- blok was. - Als er een uitzondering optreedt binnen het try-blok, wordt deze opgevangen in het catch- blok. De rest van de code in de blokpoging wordt niet uitgevoerd, de uitvoering van de blokvangst begint onmiddellijk. - Ik begrijp het niet helemaal. - Met andere woorden, deze code werkt als volgt:
  1. Als er een uitzondering optreedt binnen het try- blok, wordt de code in dit blok niet meer uitgevoerd, maar begint de uitvoering van de blokvangst .
  2. Als er geen uitzondering is opgetreden, wordt het try-blok tot het einde uitgevoerd en wordt catch nooit uitgevoerd .
- Ahum! - Stel je voor dat we na elke methodeaanroep controleren of de aangeroepen methode door zichzelf of door een uitzondering is beëindigd. Als er een uitzondering was, begint JVM de blokvangst uit te voeren als deze beschikbaar is, en vangt een uitzondering op. Als er geen catch-blok is, beëindigt JVM de huidige methode. Vervolgens begint dezelfde controle in de methode die de huidige methode heeft aangeroepen. - Nu denk ik dat ik het snap. - Dat is prima. - En wat is die uitzondering in het vangstblok? - Alle uitzonderingen zijn klassen die zijn geërfd van de klasse Exception. We kunnen ze allemaal vangen door de klasse in de vangst op te gevenblok, of allemaal tegelijk door een gemeenschappelijke uitzondering van de bovenliggende klasse op te geven. Vervolgens kunt u uit de variabele e (deze variabele slaat de referentie van een uitzonderingsobject op) alle benodigde informatie over de fout op. - Geweldig! En wat als er in mijn methode verschillende uitzonderingen voorkomen, mag ik daar dan op verschillende manieren mee omgaan? - Je moet. U kunt dat als volgt doen: Oud niveau 09 - 7- Het try-blok kan meerdere catch- blokken bevatten, die elk exceptions van zijn type opvangen. - Umph. Nou, ik snap het wel een beetje. Zelf ga ik zoiets natuurlijk niet schrijven. Ik zal echter niet bang worden als ik zo'n code tegenkom.

4 Elly, RuntimeException, gooit

Oud niveau 09 - 8- Ik heb besloten om vandaag een ander onderwerp ter sprake te brengen. In Java zijn alle uitzonderingen onderverdeeld in twee typen: gecontroleerd/gecontroleerd en ongecontroleerd/niet-gecontroleerd . Aangevinkte uitzonderingen moeten worden afgevangen, niet-aangevinkte uitzonderingen kunnen worden afgevangen, maar dat is niet vereist . - Is het mogelijk om met opzet uitzonderingen in een code te gooien? - In je code kun je zelf exceptions gooien. U kunt zelfs uw eigen uitzonderingen schrijven. Maar we zullen later diep in dit gat duiken. Laten we nu leren werken met de uitzonderingen die worden gegenereerd door de virtuele Java-machine. - OK. - Als uitzonderingen ClassNotFoundException en FileNotFoundExceptionworden gegooid (verschijnen) in een methode, moet de programmeur ze specificeren in de handtekening van een methode (methodekop). Dergelijke uitzonderingen worden gecontroleerd. Zo ziet het er meestal uit: Oud niveau 09 - 9- Dus we schrijven gewoon worpen en vermelden uitzonderingen, gescheiden door komma's. Rechts? Is dat zo? - Ja. Maar er is nog iets interessants. Om het onderstaande voorbeeld te compileren, moet de methode die methode1() aanroept deze uitzonderingen opvangen of naar voren gooien. Als je de gecontroleerde uitzondering naar voren wilt gooien, moet je dit specificeren in de header van de methode . - Nogmaals, als u in de hoofdmethode een methode wilt aanroepen die in de header-zin FileNotFoundException heeft , ...dan moet je een van deze twee dingen doen:
  1. om uitzonderingen op te vangen FileNotFoundException, …
    Je moet de code verpakken waar je een gevaarlijke methode aanroept met een try-catch- blok
  2. om geen uitzonderingen op te vangen FileNotFoundException, …
U moet deze uitzonderingen toevoegen aan de lijst met worpen van uw methode main . - Kun je me een voorbeeld geven? - Kijk hier: Oud niveau 09 - 10- Dit voorbeeld wordt niet gecompileerd, omdat de methode main de methode methode1() aanroept, die uitzonderingen genereert die moeten worden opgevangen. - Om het voorbeeld te compileren, moet u exception handling toevoegen aan de methode main . Je kunt dit op twee manieren doen: Oud niveau 09 - 11- En hier vangen we het op met behulp van try-catch : Oud niveau 09 - 12- Het wordt duidelijker, maar heel weinig. - Kijk naar het onderstaande voorbeeld: Oud niveau 09 - 13- Er is nog steeds een uitzondering – RuntimeException en daarvan geërfde klassen.Het is niet verplicht om ze te vangen of te gooien. Dit zijn ongecontroleerde uitzonderingen. Deze uitzonderingen worden als moeilijk te voorspellen beschouwd, dus het is bijna onmogelijk om het optreden ervan te voorspellen. Je kunt er dezelfde dingen mee doen, maar het is niet nodig om ze in worpen op te geven .

5 Risha, Rollen van de call-stack, hoe het te doen bij uitzonderingen

- Ik wil je wat meer vertellen over hoe uitzonderingen werken. In onderstaand voorbeeld wordt uitgelegd dat: Oud niveau 09 - 14- Ik snap het niet. - OK. Ik zal uitleggen wat er aan de hand is. - In het voorbeeld links noemen we verschillende methodes in kettingvolgorde. In methode2() maken en gooien we specifiek een uitzondering (om een ​​fout te initiëren). - Het voorbeeld rechts laat zien wat er gebeurt. Kijk naar de methode2() . Dat is waar het maken van een uitzondering in verandert: we maken een object van het type RuntimeException , slaan het op in een speciale variabele uitzondering en sluiten de methode onmiddellijk af – return . - In methode1 is er na de aanroep van methode2 een vinkje,of er een uitzondering is of niet; als er een uitzondering is, wordt methode1 onmiddellijk beëindigd. Deze controle wordt impliciet uitgevoerd na het aanroepen van elke (!) Java-methode. - Wauw! - Precies. - In de kolom rechts in de methode main heb ik geschreven wat er gebeurt als een uitzondering wordt opgevangen door het try-catch- blok. Als er geen uitzondering was, wordt de code gewoon uitgevoerd zoals gepland. Als er een uitzondering was van het type dat is gespecificeerd in catch , dan behandelen we het. - En wat betekenen throw en instanceof ? - Kijk naar de laatste regel aan de linkerkant en gooi nieuwe RuntimeException(s). Op deze manier maken en gooien we een uitzondering. Dit is slechts een voorbeeld. Tot nu toe doen we het niet. - Met behulp van het commando « à instantie van B » in het rechterblok controleren we of het object a het type B heeft . Dat wil zeggen, of het object dat is opgeslagen in de variabele exception, het type RuntimeException heeft . Het is een logische uitdrukking. - Nou, het wordt een beetje duidelijker.

6 Diego, taak voor het vangen van uitzonderingen

- Kijk hier! Oom Diego heeft een paar taken voor je meegebracht. Wens je geluk. Ik denk dat je het nodig zult hebben. Hé. Oud niveau 09 - 15- Hé, Amigo! Hier zijn enkele interessante taken voor het vangen van uitzonderingen.
Taken vangen
1 1. Uitzondering bij het werken met getallen
Vang de uitzondering op die optreedt bij het uitvoeren van de code:
int a = 42 / 0;
Geef de uitzondering op het scherm weer en geef het type op
2 2. Uitzondering bij het werken met strings
Vang de uitzondering op die optreedt wanneer de code wordt uitgevoerd:
String s = null;
String m = s.toLowerCase();
Geef de uitzondering op het scherm weer en geef het type op.
3 3. Uitzondering bij het werken met arrays
Vang de uitzondering op die optreedt wanneer de code wordt uitgevoerd:
int[] m = new int[2];
m[8] = 5;
Geef de uitzondering op het scherm weer en geef het type op.
4 4. Uitzondering bij het werken met lijstverzamelingen
Vang de uitzondering op die optreedt wanneer de code wordt uitgevoerd:
ArrayList<String> list = new ArrayList<String>();
Tekenreeks s = lijst.get(18);
Geef de uitzondering op het scherm weer en geef het type op.
5 5. Uitzondering bij het werken met kaartverzamelingen
Vang de uitzondering op die optreedt wanneer de code wordt uitgevoerd:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(null, null);
kaart.verwijderen(null);
Geef de uitzondering op het scherm weer en geef het type op.
- Tip: schrijf eerst een programma, kijk dan welke exception zich voordoet en pas daarna de code aan en vang die exception op.

7 Risha, hoe meerdere vangsten werken

Oud niveau 09 - 16- Nu nog enkele interessante lezingen. Ik vind het zo leuk om les te geven. - Ik wil je vertellen hoe een meervoudige vangst werkt. Eigenlijk is het heel simpel: als er een uitzondering optreedt in het blok try , wordt de uitvoering van het programma overgebracht naar de eerste catch . - Als het type tussen haakjes van de block catch hetzelfde is als het type van het exception-object, dan begint de uitvoering van de code binnen de {}. Anders gaan we naar de volgende vangst . Daar wordt de controle herhaald. - Als er geen catch- blokken meer zijn, maar de uitzondering niet is opgevangen, wordt deze naar voren gegooid en wordt de huidige methode onderbroken. - Ik zie. Die vangst wordt uitgevoerd, waarvan het type overeenkomt met het type uitzondering. - Ja, juist. Eigenlijk is het een beetje ingewikkelder: het punt is dat de klassen van elkaar kunnen worden geërfd. Als de klasse «Koe» is geërfd van de klasse «Dier», kan het object van het type «Koe» niet alleen worden opgeslagen in een variabele van het type «Koe», maar ook in een variabele van het type «Dier» . - Dus? - Aangezien alle exceptions worden geërfd van de klasse Exception of RuntimeException (die ook wordt geërfd van Exception ), kunnen ze allemaal worden opgevangen met de commando's catch (Exception e) of catch (RuntimeException e) . - Dus? - Dit betekent dat,ten eerste kun je elke uitzondering opvangen met behulp van het commando catch(Exception e) . Ten tweede is de volgorde van de catch- blokken van belang. Voorbeelden: - ArithmeticException die het resultaat is van deling door 0 wordt gevangen in de tweede vangst. Oud niveau 09 - 17- In het onderstaande voorbeeld wordt ArithmeticException gevangen in de eerste catch , omdat klassen van alle uitzonderingen worden geërfd van Exception. Uitzondering vangt dus elke uitzondering op . Oud niveau 09 - 18- In het onderstaande voorbeeld wordt de exception ArithmeticException niet opgevangen, maar naar de aanroepende methode gegooid. Oud niveau 09 - 19- Nou, het wordt nu duidelijker. Deze uitzonderingen zijn niet zo eenvoudig. - Het lijkt alleen maar zo. In feite is het een van de eenvoudigste dingen in Java. - Ik twijfel of ik er blij of boos over moet zijn...

8 Diego, Meerdere exception catch-taken

- Hé, Amigo! Gisteren werd ik dronken en maakte ik je taken te ingewikkeld, maar ik hoop dat je er geen last van hebt en dat je ze allemaal zult oplossen? Het is voor je eigen bestwil. Hier:
Taken
1 1. Uitzonderingen
Er is een methode die twee uitzonderingen genereert die zijn geërfd van Exception en de andere twee die zijn geërfd van RuntimeException : NullPointerException , ArithmeticException , FileNotFoundException en URISyntaxException .

U moet NullPointerException en FileNotFoundException afvangen , maar niet om ArithmeticException en URISyntaxException af te vangen . Hoe je dat doet?
2 2. Uitzonderingen vangen
Er zijn drie uitzonderingen die achtereenvolgens zijn geërfd van Exception :
class Exception1 breidt Exception
uit class Exception2 breidt Exception1 uit
class Exception3 breidt Exception2 uit
Er is een methode die als volgt wordt beschreven:
public static void method1() gooit Exception1, Exception2, Exception3

Schrijf een catch blok om alle drie Exception1 , Exception2 en Exception3 te vangen
3 3. Selectieve uitzonderingen afvangen
1. Ontdek welke uitzonderingen worden gegenereerd door de methode BEAN.methodThrowExceptions .
2. De methode processExceptions() moet de methode BEAN.methodThrowExceptions aanroepen en uitzonderingen afhandelen:
2.1. als er een uitzondering FileSystemException optreedt, log deze dan in door de methode BEAN.log aan te roepen en
2.2 naar voren te gooien. als er een uitzondering CharConversionException of een andere IOException optreedt, log deze dan gewoon door de methode BEAN.log
aan te roepen 3. Voeg de klasse/type van de uitzondering die u doorstuurt toe in 2.1. naar het procesExceptions()methode handtekening.
4. Behandel de resterende uitzondering in de methode main() en log deze. Gebruik try..catch

Tip:
als je de uitzondering MyException hebt opgevangen , die je niet wilde vangen, kun je deze naar voren gooien met de volgende code:
catch (MyException e) {
throw e;
}
4 4. Aangevinkte uitzonderingen opvangen
Behandel alle aangevinkte uitzonderingen in de methode processExceptions() .
U moet elke aangevinkte uitzondering die is opgetreden op het scherm weergeven.
U mag slechts één blok proberen gebruiken .
5 5. Niet-aangevinkte uitzonderingen afvangen
Behandel alle niet-aangevinkte uitzonderingen in de methode processExceptions() .
U moet een stacktracering van elke opgetreden uitzondering op het scherm weergeven met behulp van de methode printStack() .
U mag slechts één blok proberen gebruiken .

9 Hoogleraar, Lezing over uitzonderingen

- Vandaag hebben we een super interessant onderwerp - uitzonderingen. In die tijd, toen jonge wetenschappers en programmeurs erg enthousiast waren over dit onderwerp... - Sorry, ik moet naar het lab. Hier zijn de aantekeningen van de colleges. Ik denk dat je er zelf wel achter komt. Hier: Java-uitzonderingen (Oracle-documentatie) Afhandeling van uitzonderingen in Java (Java T-punt) Java - Afhandeling van uitzonderingen (tutorialspunt) Basisafhandeling van Java-uitzonderingen

10 juli

- Amigo, wat vind je van de les van vandaag? Is je positronbrein nog niet uitgewerkt? Diego's taken zijn genoeg om iedereen uit te putten. Laten we een biermoment nemen en ontspannen. Sta je nog?

11 Kapitein Eekhoorns

- Hallo, soldaat! - Goedemorgen meneer! - Ik heb geweldig nieuws voor je. Hier is een snelle check om je vaardigheden te versterken. Doe het elke dag en je zult je vaardigheden heel snel verbeteren. Taken zijn speciaal ontworpen om te doen in Intellij IDEA.
Extra taken te doen in Intellij Idea
1 1. Delen door nul
Maak een methode public static void divisionByZero() , waarbij je elk getal door nul moet delen, en toon het resultaat van de deling op het scherm.
Verpak de aanroep van de divisionByZero()- methode in een try..catch . Geef de exception stack trace op het scherm weer met behulp van de methode exception.printStackTrace() .
2 2. Aftellen van 10 naar 0
Schrijf een lus om af te tellen van 10 naar 0. Gebruik Thread.sleep(100) om een ​​vertraging te maken;
Wikkel het slaapgesprek in een try..catch .
3 3. Verpak een methode in een try..catch
Lees getallen van het toetsenbord. Schrijf een code voor het lezen van getallen van het toetsenbord in een aparte methode readData() .
Verpak de hele body van deze methode (de volledige code binnen de readData() methode, behalve de declaratie van de lijst waar de nummers zullen worden opgeslagen) in een try..catch .

Als de gebruiker wat tekst invoert in plaats van een nummer in te voeren, moet de methode de uitzondering opvangen en alle eerder ingevoerde nummers op het scherm weergeven.
Nummers weergeven op het scherm. Elk nummer moet op een nieuwe regel staan. De volgorde van de getallen moet hetzelfde zijn als bij de invoer.
4 4. Datumomzetter
Lees van het toetsenbord een datum in het formaat «08/18/2013»
Geef die datum op het scherm weer in de vorm van «AUG 18, 2013».
Gebruik de objecten Date en SimpleDateFormat .
5 5. Klinkers en medeklinkers
Schrijf een programma dat regels van het toetsenbord leest.
Het programma moet twee strings op het scherm weergeven:
1) de eerste string moet klinkers bevatten
2) de tweede string moet medeklinkers en interpunctietekens uit de ingevoerde tekst bevatten.
Scheid tekens door spaties.

Voorbeeld invoer:
Stop kijk luister
Voorbeeld uitvoer:
oooie
stplklstn
6 6. Het verhaal van Roodkapje
1. Er zijn vijf klassen: Roodkapje, grootmoeder, patty, houthakker, wolf.
2. Elke klasse heeft twee velden van het type ArrayList : gedood en opgegeten.
3. Noodzakelijke objecten zijn al gemaakt (kap, grootmoeder, ...).
4. Creëer de juiste relatie (wie at en doodde wie) om de logica van "Roodkapje" te begrijpen.
7 7. Verplaats statische wijzigingen
Verplaats statische wijzigingen zodat de code wordt gecompileerd.
8 8. Lijst met getallenreeksen
Maak een lijst waarvan de elementen getallenreeksen zijn. Voeg aan de lijst vijf objectarrays toe met respectievelijk een lengte van 5, 2, 4, 7, 0. Vul arrays met alle gegevens en geef ze weer op het scherm.
9 9. Tien katten
Maak een klasse Kat aan met een veld String name .
Maak een woordenboek Map<String, Cat> , voeg 10 katten toe aan het model «Naam» - «Kat».
Haal van de kaart een reeks namen op en toon de reeks op het scherm.
- Die taken waren voor greens. Ik heb bonustaken met een hogere complexiteit toegevoegd. Alleen voor topwapens.
Bonustaken
1 1. Programma compileert en start niet. Maak het.
Taak: Het programma leest twee bestandsnamen van het toetsenbord en kopieert het eerste bestand naar de locatie die wordt aangegeven door de tweede naam.
2 2. Voeg nieuwe functionaliteit toe aan het programma.
Oude taak: het programma moet twee bestandsnamen van het toetsenbord lezen en het eerste bestand kopiëren naar de locatie die wordt aangegeven door de tweede naam.
Nieuwe taak: het programma moet twee bestandsnamen van het toetsenbord lezen en het eerste bestand kopiëren naar de locatie die wordt aangegeven door de tweede naam.

Als het bestand (dat gekopieerd gaat worden) met de opgegeven naam niet bestaat, zou het programma op het scherm het bericht «Bestand bestaat niet» moeten weergeven en proberen de bestandsnaam nogmaals van de console te lezen voordat het wordt gelezen. naam van het tweede (bestemmings)bestand.
3 3. Algoritme leren en oefenen.
Lees van het toetsenbord de lijst met woorden en cijfers. Toon op het scherm woorden in oplopende volgorde en de nummers in aflopende volgorde.

Voorbeeld invoer:
Kers
1
Boon
3
Appel
2
0
Watermeloen

Voorbeeld uitvoer:
Appel
3
Boon
2
Kers
1
0
Watermeloen
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION