Bloki Try and catch so temeljne komponente obravnavanja napak v večini sodobnih programskih jezikov, vključno z MATLAB. Njihova uporaba je ključnega pomena pri preprečevanju kritičnih okvar in izboljšanju uporabniške izkušnje, saj razvijalcu omogočajo potrebne ukrepe, ko pride do napake.
Mehanizem poskusi/ulovi deluje tako, da nastavi določene dele kode, ki jih je treba nadzirati glede napak ('poskusi'), in dejanja, ki jih je treba izvesti, če je zaznana napaka ('ulov').
Zdaj pa se poglobimo v glavno temo z rešitvijo pogoste težave.
Nepričakovan vnos v funkciji MATLAB
Pogosta težava v MATLAB-u je obravnavanje nepričakovanih vnosov v funkciji. Brez ustrezne obravnave napak postane težava, ker lahko povzroči popolno odpoved funkcije in zrušitev programa. To je ravno tam, kjer je poskus/ulov lahko rešitelj.
function res = handledFunction(input) try % Potentially problematic code res = sqrt(input); catch ME % Handle the exception disp('An error occurred while calculating the square root.') disp(getReport(ME, 'basic')) end end
Korak za korakom razlaga kode
Funkcija `handledFunction` je zasnovana za izračun kvadratnega korena svojega vnosa. Če pa imamo vhod, ki ne dovoljuje izračuna kvadratnega korena (na primer negativno število), bi MATLAB običajno izdal napako in se ustavil.
- Najprej vstavimo kodo, ki lahko povzroči napako, znotraj a poskusi blokirati. Če se koda uspešno izvede, se blok catch preskoči.
- Če pride do napake znotraj poskusnega bloka, se nadzor programa prenese na blok za ulov, pri čemer preskoči katero koli drugo kodo v poskusnem bloku. Blok catch je zasnovan tako, da elegantno obravnava napako, namesto da ustavi celotno izvajanje programa. Do informacij o napaki lahko dostopate prek podane spremenljivke, v tem primeru `ME`.
- Končno `getReport(ME, 'basic')' nudi kratko poročilo o napaki, ki se je zgodila. To je lahko ključnega pomena za odpravljanje napak ali za prikaz pomembnega sporočila o napaki končnemu uporabniku.
Podobne situacije, knjižnice in funkcije
Struktura poskusi/ulovi ni omejena na funkcije. Uporabite ga lahko kjer koli v kodi, kjer lahko pride do napake. Smiselno obravnavanje napak lahko izboljša robustnost programa, zagotovi nadomestne rešitve ali pravilno sprosti vire po pojavu napake.
Druga podobna funkcija MATLAB, ki se lahko uporablja za obravnavanje napak, je `error`. Omogoča ustvarjanje sporočil o napakah po meri in dobro deluje z bloki poskusi/ulovi.
Poleg tega razred MException v MATLAB zagotavlja naprednejše funkcije za zajem in obravnavanje napak. Ustvarite lahko objekte MException, jih vržete in ujamete znotraj bloka poskusi/ulovi.
Obravnavanje napak je ključni del programiranja in vsi koderji morajo biti seznanjeni s koncepti in orodji, ki so na voljo v njihovem želenem jeziku, da lahko učinkovito obravnavajo napake. Ne glede na to, ali uporabljate poskus/ujemi v MATLAB ali podobne konstrukcije v drugih jezikih, je zagotavljanje, da lahko vaš program obravnava nepričakovane vnose ali napake, ključni del izdelave robustne, prožne kode.