Erinevus lehekülje "Java:Veahaldus" redaktsioonide vahel

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
37. rida: 37. rida:
 
System.out.println("A[" + index + "] is " + A[index]);
 
System.out.println("A[" + index + "] is " + A[index]);
 
</source>
 
</source>
 +
 +
Sellisel lähenemisel on aga puudused:
 +
* Teatud tingimustes on väga keeruline või isegi võimatu tuvastada kõik võimalikud probleemid, mis võivad juhtuda.
 +
* Kõikide võimalike probleemide ennetamise puhul võib lihtne kood muutuda väga keeruliseks ja mahukaks.
 +
 +
Java (nagu ka Python) pakub võimalust tegeleda vigadega mõistlikul kujul sellel hetkel, kui need tekivad (ehk siis enne, kui need programmi töö täitsa seisma panevad).
 +
 +
== Erindid ==
 +
 +
Erindid (ingl Exception) tähistavad erilisi või mingil määral ootamatuid olukordi võrreldes programmi tavapärase tööga. Kui programm peab internetist lugema valuutakursid, siis erind on olukord, kui internet ei tööta või kui valuutakursside veebileht ei tööta jne. Ehk siis programmi tavapärane töö on see, et loetakse andmed veeilehelt ja kuvatakse need kasutajale. Kõiksugu probleemid lähevad erindite alla.
 +
 +
Erind on olemuselt laiem kui viga (ingl error). Kui viga tähistab üldiselt olukorda, kus midagi on läinud katki, siis erinditega saab märku anda olukorrast, mis on lihtsalt teistsugune võrreldes tavapärasega, aga pole tingimata viga. Erindeid saab kasutada programmivoo juhtimiseks (natuke sarnane <code>if</code>-lausele).
  
 
[[Category:Java juhend|Veahaldus]]
 
[[Category:Java juhend|Veahaldus]]

Redaktsioon: 18. veebruar 2015, kell 00:19

Programmeerija peab koodi kirjutades arvestama võimalike eriolukordadega, mis võivad programmi käivitamisel tekkida. Töökindel programm on selline, mis suudab erinevate olukordadega toime tulla ilma, et jookseks kokku. Näiteks kui küsida massiivist negatiivse või liiga suure indeksiga elementi.

Töökindluse tõstmiseks on võimalik proovida kõik võimalikke vigu vältida ehk tegeleda ennetava tööga. Lisaks sellele pakub Java võimaluse tegeleda vigadega nende tekkimise hetkel (mingil märral nagu tulekahju kustutamine).

Vigade ennetamine

Mõni koodilõik vajab teatud tingimuste täitmist selleks, et korrektselt töötada. Kui vajalikud eeltingimused on täidetud, saab kood töötada ilma vigadeta.

Näiteks: <source lang="java"> if(i < 0 || i >= A.length) {

   // Do something to handle the
   // out-of-range index, i

} else{

   System.out.println(A[i]);

} </source>

Käsu System.out.println(A[i]); eeltingimuseks on i >= 0 && i < A.length.

Töökindel programm eeldab, et igal sammul tuleb kontrollida kõikide eeltingimuste täitmist. Eeltingimuste täitmist võib kontrollida if-lausega või jälgides, et tingimused on juba täidetud eelneva koodiga. Näiteks:

<source lang="java"> int index; Scanner s = new Scanner(System.in); while (true) {

   //  read next token until it's int
   while (!s.hasNextInt()) s.next();
   index = s.nextInt();
   if (index >= 0 && index < A.length)
       break;
   System.out.println("Your answer must be >= 0 and < " + A.length);

} // At this point, we can be absolutely sure that the value // of index is in the legal range of indices for the array A. System.out.println("A[" + index + "] is " + A[index]); </source>

Sellisel lähenemisel on aga puudused:

  • Teatud tingimustes on väga keeruline või isegi võimatu tuvastada kõik võimalikud probleemid, mis võivad juhtuda.
  • Kõikide võimalike probleemide ennetamise puhul võib lihtne kood muutuda väga keeruliseks ja mahukaks.

Java (nagu ka Python) pakub võimalust tegeleda vigadega mõistlikul kujul sellel hetkel, kui need tekivad (ehk siis enne, kui need programmi töö täitsa seisma panevad).

Erindid

Erindid (ingl Exception) tähistavad erilisi või mingil määral ootamatuid olukordi võrreldes programmi tavapärase tööga. Kui programm peab internetist lugema valuutakursid, siis erind on olukord, kui internet ei tööta või kui valuutakursside veebileht ei tööta jne. Ehk siis programmi tavapärane töö on see, et loetakse andmed veeilehelt ja kuvatakse need kasutajale. Kõiksugu probleemid lähevad erindite alla.

Erind on olemuselt laiem kui viga (ingl error). Kui viga tähistab üldiselt olukorda, kus midagi on läinud katki, siis erinditega saab märku anda olukorrast, mis on lihtsalt teistsugune võrreldes tavapärasega, aga pole tingimata viga. Erindeid saab kasutada programmivoo juhtimiseks (natuke sarnane if-lausele).