Arduino:
Virheiden käsittely

Kuinka:

Kuvitellaan, että Arduinosi lukee sensorilta, joka voi ajoittain tuottaa mittausalueen ulkopuolisia arvoja. Tässä on tapa, jolla voisit käsitellä tätä:

int sensorValue = analogRead(A0);

if (sensorValue >= 0 && sensorValue <= 1023) {
  // Arvo on mittausalueella, jatketaan käsittelyä
  Serial.println(sensorValue);
} else {
  // Arvo on mittausalueen ulkopuolella, käsittele virhe
  Serial.println("Error: Sensor value out of range.");
}

Esimerkkitulostus:

523
Error: Sensor value out of range.
761

Syväsukellus

Virheiden käsittely ei aina ole ollut näin suoraviivaista. Varhaisina aikoina kehittäjät usein jättivät virheet huomioimatta, mikä johti pelättyyn “määrittelemättömään käytökseen”. Ohjelmoinnin kehittyessä myös työkalut kehittyivät — nykyään sinulla on poikkeuksia monissa kielissä, mutta Arduinossa noudatetaan vielä vanhan koulukunnan ’tarkista ensin’ -periaatetta laitteistorajoitusten ja C++:n juurien vuoksi.

Arduino-ohjelmoinnissa näkee usein if-else-lauseita virheiden käsittelyyn. On kuitenkin vaihtoehtoja: assert-funktion käyttäminen suorituksen pysäyttämiseen, jos ehto ei täyty, tai vikasietoisten mekanismien suunnittelu itse laitteistoon.

Virheiden käsittelyn toteuttamisessa harkitse ohjelman pysäyttämisen ja sen jatkamisen vaikutusta oletusarvoiseen tai turvalliseen tilaan. On kompromissi, ja oikea valinta riippuu keskeytysten potentiaalisesta vahingosta verrattuna virheelliseen toimintaan.

Katso Myös

Syvennä tietämystäsi virheenilmaisusta ja -käsittelystä näiden avulla:

Tämän tiedon avulla sinulla pitäisi olla taitoja ja itseluottamusta välttää Arduinon seikkailuissasi virheiden aiheuttamat ansoja.