I le avea ai o se Java developer, oe tatau ona i ai se malamalama lelei o Java tuʻusaʻoga ma tuusaunoaina tagofiaina.
Lenei aʻoaʻoga maua ai le malamalama malamalama e tatau ona i ai uma polokalame pe a galulue ma Java polokalame. Ina ia amata, sei o tatou amata i le malamalama poʻo le a tonu Java Tuusaʻoga.
O se polokalame a Java e mafai ona taufetuli i ni faʻafitauli e mafua ai ona faʻamuta faʻafuaseʻi le polokalame a o faʻataunuʻuina. O nei faʻafitauli e taʻua o tuusaunoa.
O se polokalame lelei e tatau ona mafai ona iloaina mea sese e ono tutupu i le taimi o faʻatinoina ma saunia isi auala mo le polokalama e uia i le tulaga o se tuusaunoa. O lenei faiga e taʻua o le exception handling.
Atonu o loʻo e tau mafaufau pe aisea tatou te manaʻomia ai le faʻatonutonuina uma. Aisea e le tusia ai ni polokalame e le lafo ai ni tuusaunoa?
A o le mea ua i ai, o le tusiaina o polokalame e le lafo ai tuusaunoa e le faigofie e pei ona foliga mai. Tele o taimi, o nei sese le maalofia o loʻo i fafo atu o le pule a le polokalame.
Polokalama e talia faʻamatalaga a le tagata faʻaaoga e faigofie ona taufetuli i ni tuusaunoaga ona o le le saʻo o faʻamatalaga a le tagata faʻaaoga. E faʻapena foi le faitauina o faila i fafo e mafaufau ai i le avanoa ua siitia ai latou, toe suia igoa, pe ua aveʻesea e seisi fafo e aunoa ma le iloa e le polokalame.
I ia tulaga, o le polokalama e tatau ona mafai ona faʻatautaia le tuusaunoa ma le agalelei e aunoa ma le faʻamutaina o le faʻasalaga.
Uma tuusaunoa i Java e tatau ona avea ma se tamaititi a le Exception
vasega, o ia lava o se tamaititi a le Throwable
vasega.
Lua vasega laiti o le Exception
vasega o le RuntimeException
ma IOException
.
Leisi vasega tamaititi o le Throwable
vasega o le Error
vasega. Peitai, sese e ese mai tuusaunoaga.
O mea sese e faʻailoa mai ai faʻafitauli e ono feagai le JVM ma taimi o faʻatinoga. O nei faʻafitauli e masani ona faitio ma e le mafai ona toe faʻaleleia. O mea e teu ai mea e manatua ma mea e le tutusa ai potutusi o mafuaaga masani ia mo mea sese i polokalama.
StackOverflowError
ma OutOfMemoryError
e lua faʻataʻitaʻiga o Java Errors.
E mafai ona matou vaevaeina tuʻufaʻatasi Java i ni vaega taua se lua: siaki ma leai se siaki tuusaunoa
Siaki tuusaunoaina o tuusaunoaga ia e manaʻomia e taulimaina i le polokalama ae leʻi tuʻufaʻatasia. Afai o nei tuʻusaʻoga e leʻo tagofiaina, o le polokalama o le a le tuʻufaʻatasia e le Java compiler. O le mea lea, e taʻua foi ia o tuʻufaʻatasiga taimi-tuʻufaʻatasi. IOExceptions
o ni faʻataʻitaʻiga lelei o siaki tuusaʻo.
O tuusaunoa e leʻo siakiina o tuusaunoaga ia e le amanaʻiaina e le tuʻufaʻatasiga pe a tuʻufaʻatasia le polokalama. Pe na matou faʻatautaia nei tuusaunoa i le polokalama pe leai e le afaina pe a tuʻufaʻatasia le polokalama. Talu ai o le tuʻufaʻatasia o le taulimaina e le faʻatauaina i luga o nei tuusaunoaga, o le tatou polokalama mafai ona tamoʻe i RuntimeExceptions
e mafua ai le faʻamutaina o le polokalama.
O vasega uma e faʻalauteleina le RuntimeException
vasega e leai se siakiina tuusaunoa. Lua faʻataʻitaʻiga o ia vasega o NullPointerException
ma ArrayIndexOutOfBoundsException
.
O le a matou o atu i ni nai masani faʻaaogaina metotia i le Java Exception
vasega:
getMessage
: faʻafoʻi mai se feʻau e aofia ai faʻamatalaga e uiga i le tuusaunoa na tupu.printStackTrace
: toe faʻafoʻi le faʻailoga o le tuʻufaʻatasiga na tupu.toString
: toe faʻafoʻi le igoa o le vasega ma le feau ua toe faafoi mai ma getMessage
metotiaSeʻi tatou vaai pe faʻafefea ona tatou taulimaina tuusaunoaga i Java:
E mafai ona matou puʻeina tuusaunoaina ma faʻatautaia lelei latou a taumafai-puʻe poloka i Java.
I lenei faʻamatalaga, o le vaega o le tulafono e faigofie ona togi se faʻapitoa e tuʻuina i totonu o le poloka poloka ma le poloka poloka / poloka puʻeina le togi tuusaunoa / tuusaunoaina ma faʻatautaia latou e tusa ai ma se manatu lelei tatou te saunia.
O le faʻavae autu o le poloka puʻe faʻataʻitaʻi e faapea:
try {
//exception-prone code } catch(Exception e) {
//error handling logic }
Faatasi ai ma lenei auala, o le polokalama e le taofi le faʻataunuʻuina pe a fai o se tuusaunoa lafoina e le polokalama, nai lo, e agalelei faʻatautaia.
O le a matou vaʻai pe faʻafefea ona taulima le IOExceptions
togi e le FileReader
vasega i se polokalame Java.
Faʻataʻitaʻiga:
import java.io.FileReader; public class TryCatchBlockExample {
public static void main(String[] args) {
try {
FileReader file = new FileReader('source.txt');
file.read();
}
catch(Exception e) {
e.printStackTrace();
}
} }
Lenei, ua matou faʻaaogaina se poloka puʻe se tasi e taofi ai le FileNotFoundException
togi pe a faʻatupuina le FileReader
vasega ma IOException
togi e le read()
metotia o le FileReader
vasega.
O tuusaunoaga uma nei e lua o le fanau a le Exception
vasega.
E mafai foʻi ona matou faʻaaogaina ni faʻamatalaga puʻe e puʻe ai ituaiga eseese o mea sese na lafoina e le code i totonu o le tasi faʻamatalaga taumafai. Mo se faʻataʻitaʻiga muamua, e mafai ona matou faʻaogaina se poloka puʻe se tasi e puʻe ai le FileNotFoundException
ma le isi poloka poloka mo le IOException
pei ona faʻaalia mai i le fasi pepa lenei:
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class TryCatchBlockExample {
public static void main(String[] args) {
try {
FileReader file = new FileReader('source.txt');
file.read();
file.close();
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
} }
Afai o le tuʻufaʻatasi tuʻufaʻatasi fetaui ma le tuusaunoa na faʻatautaia e le muamua faʻamatalaga puʻeina, ona faʻatautaia ai lea e le mafaufauga i totonu o le muamua faʻamatalaga puʻeina.
Afai e le tutusa tuʻusaʻoga, ona pasi ane lea i le faʻamatalaga puʻega lona lua. Afai e sili atu ma le lua faʻamatalaga puʻeina, o lenei gaioiga faʻaauau pea seʻia oʻo i le tuusaunoa e oʻo i se puʻeina o faʻamatalaga e maua lona ituaiga.
Talu mai FileNotFoundException
o se tamaʻi ituaiga o IOException
, faʻaaoga le faʻamatalaga puʻe lona lua e puʻe ai le FileNotFoundException
e le galue. O le a faʻatautaia e le uluaʻi puʻega faʻamatalaga ma e le oʻo i le lona 2 faʻamatalaga.
A matou faʻaaogaina a taumafai-puʻe poloka e puʻe ni tuusaunoaga i la matou polokalame, e i ai taimi matou te mananaʻo e faʻatino ni nai mafaufauga e ui lava i le mea moni pe o se tuusaunoa na puʻeina pe leai. I tulaga ia, e mafai ona tatou faʻaaogaina le taumafai-puʻe-mulimuli poloka nai lo le a taumafai-puʻe poloka
Ma, o le numera i totonu ole finally
o loʻo faʻatinoina se faʻamatalaga tusa pe iai se tuusaunoaina pe leai. O le finally
faamatalaga tatau ona oʻo mai i taimi uma i le faaiuga o le taumafai-puʻe-mulimuli poloka.
Mo se faʻataʻitaʻiga, a tatou faʻaaogaina le FileReader
vasega e faitau se faila, e taua le tapunia o le tatalaina faila i le faaiuga o gaioiga pe o se tuusaunoa tupu pe leai. Ina ia mautinoa lenei mea, e mafai ona matou tuʻu le tulafono e tapuni ai le faila i totonu o le finally
faʻamatalaga
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class TryCatchFinallyBlockExample {
public static void main(String[] args) {
FileReader file = null;
try {
file = new FileReader('source.txt');
file.read();
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
finally {
file.close();
}
} }
Ae peitaʻi, afai e te taumafai e tuʻufaʻatasia le numera i luga atu, o le a le tuʻufaʻatasia le numera ona o le le faʻatautaia IOException
. Aua o le close()
metotia o le FileReader
vasega mafai foi ona togi IOExceptions
. Ma, e tatau ona tatou tuʻuina lenei vaega i totonu o le isi poloka poloka pei o lenei:
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class TryCatchFinallyBlockExample {
public static void main(String[] args) {
FileReader file = null;
try {
file = new FileReader('source.txt');
file.read();
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
finally {
try {
file.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
} }
Taulimaina o mea sese i le faʻaaogaina o le throws
upu autu i Java e faigofie. O le mea moni, i lenei auala, oe le matua tagofiaina le tuusaunoa i le nofoaga e tupu ai. Nai lo lena, matou te lafoina le tuusaunoa mai le taimi nei auala i le metotia na taʻua o le taimi nei auala. Ma, tuʻuina atu o le mea sese avea ma tiute o le fafo auala.
Ina ia lafoa se tuusaunoa mai se metotia, oe na o le taʻutino atu o lenei metotia ono tiaʻi le manatu faʻapitoa. Seʻi tatou vaai pe faʻafefea ona tatou tagofia IOExceptions
togi e le FileReader
vasega faʻaaogaina lenei auala.
Faʻataʻitaʻiga:
import java.io.FileReader; import java.io.IOException; public class ThrowsExample {
public void readFile throws IOException {
FileReader file = new FileReader('source.txt');
file.read();
file.close();
} }
E le pei o isi auala i le lisi lea, o le throw
E le faʻaaogaina le upu autu e faʻatautaia ai mea sese. Ae talu ai o le toʻatele o tagata e le mautonu le throw
upu autu ma throws
upu autu, matou manatu e sili ona talanoaina lenei.
O le throw
upu faʻaaoga e faʻaaoga manino e talosagaina ai se tuusaunoa. E mafai ona tatou togiina se faʻatoʻaga faʻavaeina fou poʻo se tuusaunoa na maua i totonu o le metotia.
public class ThrowExample {
public void invalidate(int amount) throws Exception {
if (amount < 500) {
throw new Exception('Amount not sufficient');
}
} }
I se faʻaopopoga i le faʻaaogaina tuʻufaʻatasi i totonu o Java, e mafai ona e faʻauigaina au oe tuusaunoaga. Oe mafai ona faʻauigaina i latou a le o siaki pe leai ni siaki. Ina ia fatuina se tuusaunoaina siaki fou, o lau tuusaunoa fou e tatau ona faʻalauteleina le Exception
vasega.
Fausia se le mautonu ese ai, faʻalauteleina le RuntimeException
vasega.
I le faʻataʻitaʻiga o le code o loʻo mulimuli mai, ua matou faia se faʻailoga e faʻamatalaina e le tagata:
public class InvalidLengthException extends Exception {
private int length;
private String message;
public InvalidLengthException(int length, String message) {
this.length=length;
this.message=message;
}
public int getAmount() {
return this.length;
}
public String getMessage() {
return this.message;
} }
Lenei e mafai ona tatou faʻaogaina le mea i luga o loʻo i totonu o la matou polokalame polokalame pei o lenei:
public class InputChecker {
private int minLength;
private int maxLength;
public InputChecker(int minLength, int maxLength) {
this.minLength=minLength;
this.maxLength=maxLength;
}
public void checkStringLength(String strInput) throws InvalidLengthException {
int strLength = strInput.length();
if (strLength maxLength){
throw new InvalidLengthException(strLength, 'Input should have maximum '+maxLength+' character');
}
} }
Afai matou te siakiina le umi o se manoa faʻaaogaina le InputChecker
vasega, o le a togiina ai le InvalidLengthException
pe a fai o le manoa umi o lalo o le maualalo le umi pe i luga o le maualuga umi.
public class Main {
public static void main(String[] args) {
InputChecker ic = new InputChecker(2, 7);
try {
ic.checkStringLength('longer than the maximum length');
}
catch(InvalidLengthException e) {
e.printStackTrace();
}
} }
A o matou tamoʻe i luga o le fasi pepa, o le a togi se InvalidLengthException
ma o le a tatou maua le mea o loʻo mulimuli mai:
InvalidLengthException: Input should have maximum 7 character
at InputChecker.checkStringLength(InputChecker.java:17)
at Main.main(Main.java:6)
I lenei aʻoaʻoga, matou te avatua ia te oe se vave ma puʻupuʻu folasaga i Java Vagana. Matou te faʻamoemoe o lea ua e malamalama lelei i mea e tuusaunoa ma faʻafefea ona taulimaina i latou i lau Java polokalame.