Tuusaunoa a Java ma Faafefea ona taulimaina i latou

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 a ni tuusaunoaga a Java

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?




Aisea tatou te Manaʻomia ai le Faʻataʻitaʻiga Tasi

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.



Hierarchy o Java Tuusaunoa

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.



Tuusaunoa vs Sese

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.




Tuusaunoaina Siaki ma Lē siakiina

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.




Masani Faʻaogaina Metotia i le Vagana Vasega

O le a matou o atu i ni nai masani faʻaaogaina metotia i le Java Exception vasega:

  1. getMessage: faʻafoʻi mai se feʻau e aofia ai faʻamatalaga e uiga i le tuusaunoa na tupu.
  2. printStackTrace: toe faʻafoʻi le faʻailoga o le tuʻufaʻatasiga na tupu.
  3. toString: toe faʻafoʻi le igoa o le vasega ma le feau ua toe faafoi mai ma getMessage metotia


Faʻafefea ona tagofia tuusaunoaga

Seʻi tatou vaai pe faʻafefea ona tatou taulimaina tuusaunoaga i Java:

taumafai-puʻe

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.

Faʻaaliga:E faamalosia le faʻaaogaina o se faʻamatalaga puʻe e tasi ma se faʻamatalaga faʻataʻitaʻi.

mulimuli ane

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();

}
}
} }

togi

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();
} }

togi

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');
}
} }


Tagata e faʻauigaina faʻapitoa

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)


Faaiuga

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.