Nga Okotahi Java me Me pehea te Hapai i a Raua

Hei kaiwhakawhanake Java, kia pai to matauranga ki nga okotahi Java me te whakahaere okotahi.

Ma tenei akoranga e maarama nga matauranga o te kaimanaaki i nga wa e mahi ana koe me nga hotaka Java. Hei tiimata, ka tiimata me te maarama he aha nga Waiata Motuhake Java.

He aha nga Okotahi Java

Ka raru pea tetahi raupaparorohiko Java i te mutunga o te kaupapa i te mutunga ohorere i te wa e whakahaerehia ana. Ko enei raru ka kiia he okotahi.

Me mohio te kaihuri rorohiko pai ki nga hapa ka pa mai i te wa e mahi ana me te whakarato i nga huarahi rereke hei whai ma te papatono mena ka kore e kitea. Ko tenei mahinga e kiia ana ko te whakahaere okotahi.

Akuanei pea kei te whakaaro koe he aha taatau e hiahia ana maatau ki te whakahaere kaupapa. He aha e kore e tuhi i nga papatono kaore e maka ana i nga waahanga rereke

No te aha e hiahia ana kia whakahaerehia te Okotahi

Ka rite ki teera, ko te tuhi i nga hotaka kaore e whiua nga okotahi kaore i te ngawari ke te ahua. I te nuinga o nga waa, ko enei hapa kaore e taea te karo kaore i te mana o te kaiwhakaputa.



Ko nga papatono e whakaae ana ki te whakauru a nga kaiwhakamahi ka raru ki te rere atu ki etahi waahanga rereke na te mea he whakaurunga he he na te kaiwhakamahi. Waihoki ko te panui i nga konae a-waho e whakaaro ana ki te tupono kua nekehia atu, kua whakaingoa te ingoa, kua mukua ranei e tetahi puna o waho me te kore e mohiotia e te Kaipupuri.

I roto i enei keehi, me kaha ki te hapai i te kaupapa motuhake me te kore e whakakorehia te mahi.

Tuhinga o mua

Ko nga okotahi katoa i Java me tamariki ki te Exception akomanga, he tama na te Throwable akomanga.

E rua nga waahanga iti o te Exception akomanga he RuntimeException me IOException.

Okotahi vs Hapa

Ko tetahi atu akomanga tamariki o te Throwable akomanga te Error akomanga. Heoi, he rereke nga he i etahi okotahi.

Ko nga Hapa he tohu i nga raru ka pa ki a te JVM i te wa e mahi ana. Ko enei raru he raru nui, kaore hoki e taea te whakaora. Ko nga rerenga mahara me nga take hotokore o te wharepukapuka nga take katoa i he ai nga hotaka.

StackOverflowError me OutOfMemoryError e rua nga tauira o nga Hapa Java.

He Okotahi Takina me te Tirotiro

Ka taea e taatau te wehe i nga Motuhake Java ki nga waahanga matua e rua: takina me kua takina okotahi.

Ko nga okotahi kua tirotirohia ko nga waahanga ke me whakahaere i te hotaka i mua i te whakahiatotanga. Mena kaore e whakahaerehia enei waahanga okotahi, kaore te papatono e whakahiatohia e te kaitoha Java. No reira, ka kiia hoki enei ko nga waatea whakahiato. IOExceptions he tauira pai mo nga panga okotahi.

Ko nga okotahi kaore i te tirotirohia ko nga waahanga ka warewarehia e te kaipupuri i te wa e whakahiatohia ana te papatono. Mena kua whakahaerehia e matou enei waahanga rereke i roto i te hotaka kaore ranei he aha i te wa e whakaemi ana te kaupapa. I te mea kaore i te whakaekea te whakahaere okotahi ki enei okotahi, ka taea e taatau kaupapa te rere ki RuntimeExceptions i hua ai te mutunga o te hotaka.

Nga akomanga katoa e toro atu ana i te RuntimeException akomanga he okotahi arowhai. E rua nga tauira o ena akomanga he NullPointerException me ArrayIndexOutOfBoundsException.

Nga Tikanga e Whakamahia Ana i Te Akomanga Tuuturu

Ka haere maatau ma etahi tikanga e whakamahia ana i te Java Exception akomanga:

  1. getMessage: whakahoki mai he korero kei roto nga taipitopito mo te okotahi i puta.
  2. printStackTrace: whakahoki i te haangai o te okotahi i puta.
  3. toString: whakahoki i te ingoa o te akomanga me nga kupu i whakahokia mai me getMessage tikanga.

Me Pehea te Hapai i nga Okotahi

Tirohia me pehea e taea ai e tatou te whakahaere i nga okotahi i Java:

ngana-hopu

Ka taea e taatau te hopu i nga waahanga me te whakahaere tika i a ngana-hopu poraka i Java.

I roto i tenei wetiweti, ko te waahanga o te waehere e kaha ana ki te maka i tetahi okotahi ka whakanohoia ki roto i te poraka poka, ka mau ki nga aukati / aukati nga awangawanga / okotahi, ka whakahaerehia kia rite ki te whakaaro o te kaupapa.

Ko te wetiweti taketake o te paraka hopu-hopu e whai ake nei:

try {
//exception-prone code } catch(Exception e) {
//error handling logic }

Ma tenei huarahi, kaore te papatono e aukati i te whakaritenga ka panga ana tetahi okotahi e te kaupapa, engari, he pai te whakahaere.

Ka kite maatau me pehea te whakahaere i te IOExceptions whiua e te FileReader akomanga i roto i te kaupapa Java.

Tauira:

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

I konei, kua whakamahia e matou tetahi poraka hopu kotahi hei hapai i te FileNotFoundException ka whiua ka whakaoho ana i te FileReader akomanga me IOException whiua e te read() tikanga o te FileReader akomanga.

Ko enei okotahi he tamariki na te Exception akomanga.

Ka taea hoki e taatau te whakamahi i nga korero hopu maha hei hopu i nga momo momo hapa i maka e te waehere i roto i te tauākī piro kotahi. Hei tauira i mua, ka taea e maatau te whakamahi i tetahi poraka hopu hei hopu i te FileNotFoundException me tetahi atu poraka hopu mo te IOException kei te whakaatu mai i nga waahanga e whai ake nei:

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

Mena ko te okotahi i whiua he rite ki te okotahi i whakahaerehia e te tauwhi hopu tuatahi, katahi ka whakahaerehia e te arorau o roto i te tauāki hopu tuatahi

Mena kaore e taupatupatu nga okotahi, ka tukuna ki te tauarotanga hopu tuarua. Mena he nui ake i te rua nga korero hopu, ka haere tonu tenei mahi tae noa ki te waa okotahi ki te kii hopu hopu e hopu ana i tona momo.

Mai FileNotFoundException he momo taarua o IOException, e whakamahi ana i te tauwhainga hopu 2 ​​hei hopu i te FileNotFoundException kaore e mahi. Ka whakahaerea e te tauwhi hopu tuatahi, kaore e tae ki te rua o nga korero.

Panui:He mea whakahau kia whakamahia kia kotahi te kupu hopu me te tauaki piro.

hopea

Ka whakamahia ana e maatau a ngana-hopu aukati ki te hopu i nga okotahi i roto i ta maatau kaupapa, kei konaa etahi waa e hiahia ana matou ki te whakamahi i etahi whakaaro ahakoa te meka i hopukina tetahi kaore ranei. I roto i enei keehi, ka taea e taatau te whakamahi i te ngana-hopukia-mutunga poraka kaore noa i te ngana-hopu aukati

Ana, ko te waehere kei roto i te finally whakatinana i te tauākī ahakoa ka puta he okotahi. Ko te finally kia tae tonu mai te korero ki te mutunga o te poraka ngana-mutunga-mutunga.

Hei tauira, ka whakamahia te FileReader akomanga ki te panui i tetahi konae, he mea nui kia kati te konae kua tuwhera i te mutunga o te tukatuka mena ka puta he rereke kaore ranei. Kia maarama ai tenei, ka taea e taatau te whakatakoto waehere hei kati i te konae ki roto i te finally tauākī

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

Heoi, ki te ngana koe ki te whakahiato i te waehere o runga ake nei, kaore te waehere e whakahiatohia na te kore ringa IOException. Na te mea ko te close() tikanga o te FileReader ka taea hoki e te akomanga te maka IOExceptions. Na, me waiho tenei waahanga ki roto i tetahi atu poraka penei:

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

}
}
} }

whiua

Te whakahaere i nga hapa ma te whakamahi i te throws he maamaa te kupu matua ki Java. Inaa hoki, i tenei huarahi, kaore koe e aro nui ki te wehe i te waahi ka puta. Engari, ka makahia e matou te rereke ki waho o te tikanga onaianei ki te tikanga e kiia nei ko te tikanga onaianei. Na, ko te tohatoha i te hapa ka riro hei kawenga mo te tikanga o waho.

Ki te maka i tetahi okotahi i waho o tetahi tikanga, me kii noa koe ka taea e tenei tikanga te maka atu i te okotahi kua whakaarohia. Kia kite me pehea e whakahaere ai IOExceptions whiua e te FileReader akomanga ma te whakamahi i tenei huarahi.

Tauira:

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

maka

Kaore i rite ki etahi atu huarahi o tenei raarangi, te throw Kare e whakamahia te kupu matua ki te hapai i nga hapa. Engari i te mea kua whakapoauau te nuinga o te iwi i te throw kupu matua me throws kupu matua, i whakaaro matou he pai ke ki te korerorero i konei.

Ko te throw Whakamahia ai te kupu matua kia marama te kii i tetahi okotahi. Ka taea e taatau te maka i tetahi waahanga rereke hou, i tetahi waahanga ranei i mau i roto i te tikanga.

public class ThrowExample {
public void invalidate(int amount) throws Exception {
if (amount < 500) {

throw new Exception('Amount not sufficient');
}
} }

Nga Mea Whakakore i te Kaiwhakamahi

Hei taapiri ki te whakamahi i nga waahanga okotahi Java kua hangai, ka taea e koe te tautuhi i au ake waahanga. Ka taea e koe te tohu ko te mea kua tohua he waahanga okotahi ranei. Hei waihanga i tetahi okotahi hou kua tirohia, ma to mea rereke hou e whakaroa te Exception akomanga.

Hei hanga i tetahi kaore i tutakina okotahi, whakaroa te RuntimeException akomanga.

I roto i te tauira waehere e whai ake nei, kua hangaia e maatau tetahi waahanga taapiri kua tautuhia e te kaiwhakamahi:

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

Ka taea e maatau te whakamahi i te waahanga i runga ake nei i roto i ta maatau kaupapa kaupapa penei:

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

Mena ka tirohia e tatou te roa o te aho ma te whakamahi i te InputChecker akomanga, ka whiua he InvalidLengthException mena kei raro te aho aho i raro i te roa iti rawa atu ranei ki runga ake i te roa morahi.

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

Ka whakahaerehia e maatau te waehere waehere o runga ake nei, ka whiua he InvalidLengthException a ka whiwhi maatau i nga waahanga e whai ake nei:

InvalidLengthException: Input should have maximum 7 character
at InputChecker.checkStringLength(InputChecker.java:17)
at Main.main(Main.java:6)

Whakamutunga

I roto i tenei akoranga, i hoatuhia e maatau ki a koe nga Whakauru Java. Ko te tumanako i tenei wa kua maarama koe ki nga mea okiri me te aha e whakahaere ai i roto i to kaupapa Java.