የጃቫ ልዩነቶች እና እነሱን እንዴት እንደሚይ .ቸው

እንደ ጃቫ ገንቢ ፣ ስለ ጃቫ ልዩነቶች እና ለየት ያለ አያያዝ ጥሩ ዕውቀት ሊኖርዎት ይገባል ፡፡

ይህ መማሪያ እያንዳንዱ ፕሮግራም አድራጊ ከጃቫ ፕሮግራሞች ጋር ሲሰራ ሊኖረው የሚገባውን መሰረታዊ ዕውቀት ይሰጣል ፡፡ ለመጀመር ፣ በትክክል የጃቫ ልዩነቶች ምን እንደሆኑ በመረዳት እንጀምር ፡፡



የጃቫ ልዩነቶች ምንድን ናቸው

የጃቫ ፕሮግራም ፕሮግራሙ በሚከናወንበት ጊዜ በድንገት እንዲቋረጥ የሚያደርጉ ችግሮች ሊያጋጥሙት ይችላሉ ፡፡ እነዚህ ችግሮች ልዩ ተብለው ይጠራሉ ፡፡


አንድ ጥሩ ፕሮግራም አውጪ በሚፈፀምበት ወቅት ሊከሰቱ የሚችሉ ስህተቶችን መገንዘብ እና እንደዚህ ያለ ልዩነት ቢኖር ለፕሮግራሙ የሚወስዱ ተለዋጭ መንገዶችን ማቅረብ መቻል አለበት ፡፡ ይህ አሠራር ልዩ አያያዝ ተብሎ ይጠራል ፡፡

አሁን በጭራሽ ለየት ያለ አያያዝ ለምን እንፈልጋለን ብለው ያስቡ ይሆናል ፡፡ ልዩነቶችን የማይጥሉ ፕሮግራሞችን ለምን አይጽፉም?




ለየት ያለ አያያዝ ለምን ያስፈልገናል

እንደ ተገኘ ፣ ልዩነቶችን የማይጥሉ ፕሮግራሞችን መፃፍ እንደሚመስለው ቀላል አይደለም ፡፡ ብዙ ጊዜ እነዚህ የማይወገዱ ስህተቶች ከፕሮግራም አድራጊው ቁጥጥር ውጭ ናቸው ፡፡



የተጠቃሚውን ግቤት የሚቀበሉ ፕሮግራሞች ተጠቃሚው በሚያቀርበው ልክ ያልሆነ ግብዓት ምክንያት ለየት ያሉ ነገሮችን ለማግኘት ይጋለጣሉ ፡፡ እንደዚሁ የፕሮግራም ባለሙያው ሳያውቁ በውጭ ምንጮች የተዛወሩ ፣ የተሰየሙ ወይም የተሰረዙበትን ዕድል ከግምት ውስጥ በማስገባት የውጭ ፋይሎችን ማንበብ ነው ፡፡

በእንደዚህ ያሉ ጉዳዮች ላይ መርሃግብሩ ግድያውን ሳያቋርጥ ልዩውን በጥሩ ሁኔታ ማስተናገድ መቻል አለበት ፡፡



የጃቫ ልዩነቶች ተዋረድ

በጃቫ ውስጥ ያሉ ሁሉም ልዩነቶች የ Exception ልጅ መሆን አለባቸው ክፍል ፣ ራሱ የ Throwable ልጅ ነው ክፍል


Exception ሁለት ዋና ዋና ንዑስ ክፍሎች ክፍል ናቸው RuntimeException እና IOException.



ልዩነት ከስህተት

ሌላ Throwable ክፍል | | + + | | ክፍል ሆኖም ስህተቶች ከተለዩ የተለዩ ናቸው ፡፡

ስህተቶች ጄቪኤም በሚፈፀምበት ጊዜ ሊያጋጥማቸው የሚችሉትን ችግሮች ያመለክታሉ ፡፡ እነዚህ ችግሮች አብዛኛውን ጊዜ ወሳኝ እና የማይመለሱ ናቸው ፡፡ የማስታወሻ ፍሰቶች እና የቤተ-መጽሐፍት አለመጣጣም ጉዳዮች በፕሮግራሞች ውስጥ ለሚከሰቱ ስህተቶች የተለመዱ ምክንያቶች ናቸው ፡፡

Error እና StackOverflowError የጃቫ ስህተቶች ሁለት ምሳሌዎች ናቸው ፡፡




የተፈተሹ እና ያልተፈተሹ ልዩነቶች

የጃቫ ልዩነቶችን በሁለት ዋና ዋና ክፍሎች ልንከፍላቸው እንችላለን ፡፡ ምልክት ተደርጎበታል እና ቁጥጥር ያልተደረገበት ልዩ ሁኔታዎች

የተረጋገጡ ልዩነቶች ከማጠናቀርዎ በፊት በፕሮግራሙ ውስጥ መያዝ የሚያስፈልጋቸው ልዩ ሁኔታዎች ናቸው ፡፡ እነዚህ ልዩነቶች ካልተያዙ ፕሮግራሙ በጃቫ አቀናባሪ አይሰበሰብም ፡፡ ስለዚህ ፣ እነዚህም የማጠናቀር-ጊዜ ልዩነቶች ተብለው ይጠራሉ ፡፡ OutOfMemoryError ከተፈተሹ ልዩነቶች ጥሩ ምሳሌዎች ናቸው ፡፡

ቁጥጥር ያልተደረገባቸው ነገሮች ፕሮግራሙን በሚያጠናቅቁበት ጊዜ አጠናቃዩ ችላ የሚሏቸው ልዩነቶች ናቸው ፡፡ እነዚህን የማይካተቱ ነገሮችን በፕሮግራሙ ውስጥ ብንይዝም ፕሮግራሙ ሲጠናቅቅ ምንም ችግር የለውም ፡፡ በእነዚህ ልዩነቶች ላይ የተለየ አያያዝ ስላልተጫነ ፕሮግራማችን ወደ | _ + + | | የፕሮግራም መቋረጥ ያስከትላል ፡፡

IOExceptions ን የሚያራዝሙ ሁሉም ክፍሎች ክፍል ያልተፈተሹ ልዩነቶች ናቸው ፡፡ የእነዚህ ክፍሎች ሁለት ምሳሌዎች RuntimeExceptions እና RuntimeException.




በልዩ ክፍል ውስጥ በተለምዶ ያገለገሉ ዘዴዎች

በጃቫ ውስጥ በብዛት ጥቅም ላይ የዋሉ ጥቂት ዘዴዎችን እናልፋለን NullPointerException ክፍል

  1. ArrayIndexOutOfBoundsException: ስለተከሰተው ሁኔታ ዝርዝር መረጃ የያዘ መልእክት ይመልሳል።
  2. Exception: የልዩነቱ ቁልል ዱካ ይመልሳል።
  3. getMessage: የክፍል ስሙን እና የተመለሰውን መልእክት በ printStackTrace ይመልሳል ዘዴ.


ልዩነቶችን እንዴት መያዝ እንደሚቻል

ልዩ ነገሮችን በጃቫ ውስጥ እንዴት መያዝ እንደምንችል እስቲ እንመልከት

መሞከር-መያዝ

የማይካተቱ ነገሮችን ለመያዝ እና በአግባቡ በመጠቀም ልንይዛቸው እንችላለን መሞከር-መያዝ ማገጃ በጃቫ ውስጥ።

በዚህ አገባብ ውስጥ ለየት ያለ ነገር ለመጣል የተጋለጠው የኮዱ ክፍል በሙከራ ብሎክ ውስጥ የተቀመጠ ሲሆን የመያዣው ብሎክ / ብሎኮች የተጣሉትን ልዩነቶች / ልዩነቶችን ይይዛሉ እና በምናቀርባቸው አመክንዮዎች ይይዛሉ ፡፡


የሙከራ ለመያዝ ብሎክ መሰረታዊ አገባብ እንደሚከተለው ነው-

toString

በዚህ አካሄድ ፕሮግራሙ አንድ ለየት ያለ ነገር በፕሮግራሙ ሲወረወር የግድያውን አያቆምም ፣ ይልቁንም በፀጋ ይከናወናል ፡፡

getMessage ን እንዴት እንደሚይዙ እንመለከታለን በ try {
//exception-prone code } catch(Exception e) {
//error handling logic }
ተወረወረ በጃቫ ፕሮግራም ውስጥ ክፍል ፡፡

ለምሳሌ:

IOExceptions

እዚህ እኛ FileReader ን ለማስተናገድ አንድ ነጠላ የማገጃ ማገጃ ተጠቅመናል የ 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();
}
} }
ቅጽበት ሲያደርግ ይጣላል ክፍል እና FileNotFoundExceptionFileReader ተወረወረ የ IOException ዘዴ ክፍል

እነዚህ ሁለቱም ልዩነቶች የ read() ልጆች ናቸው ክፍል

በነጠላ ሙከራ መግለጫው ውስጥ በኮዱ የተወረወሩ የተለያዩ አይነቶች ስህተቶችን ለመያዝ በርካታ የመያዣ መግለጫዎችን መጠቀም እንችላለን ፡፡ ለቀደመው ምሳሌ FileReader ን ለመያዝ አንድ የመያዝ ብሎክን መጠቀም እንችላለን እና ሌላ የመያዝ ብሎክ ለ Exception የሚከተለው የኮድ ቅንጣቢ እንደሚታየው

FileNotFoundException

የተወረወረው ልዩነት በመጀመሪያው የመያዣ መግለጫ ከተያዘው ልዩ ጋር የሚዛመድ ከሆነ ከዚያ በመጀመሪያው የመያዝ መግለጫ ውስጥ ባለው አመክንዮ ይያዛል ፡፡

ልዩነቶቹ የማይዛመዱ ከሆነ ወደ ሁለተኛው የመያዣ መግለጫ ይተላለፋል። ከሁለት በላይ የመያዝ መግለጫዎች ካሉ ይህ ልዩነቱ የእርሱን ዓይነት የሚይዝ የመያዝ መግለጫ እስኪደርስ ድረስ ይህ ሂደት ይቀጥላል።

ጀምሮ IOException አንድ 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();
}
} }
ን ለመያዝ የ 2 ኛ የመያዝ መግለጫን በመጠቀም የ FileNotFoundException ንዑስ አይነት ነው አይሰራም ፡፡ በመጀመሪያው የመያዣ መግለጫ ይያዛል እና ወደ 2 ኛ መግለጫ በጭራሽ አይደርሰውም ፡፡

ማስታወሻ:ከሙከራ መግለጫ ጋር ቢያንስ አንድ የመያዝ መግለጫን መጠቀም ግዴታ ነው።

በመጨረሻም

ሀ ስንጠቀም መሞከር-መያዝ በብሮግራማችን ውስጥ ልዩነቶችን ለመያዝ ብሎክ ፣ ለየት ያለ ሁኔታ ቢያዝም ባይያዝም አንዳንድ አመክንዮዎችን ተግባራዊ ማድረግ የምንፈልግባቸው አጋጣሚዎች አሉ ፡፡ በእንደዚህ ያሉ ጉዳዮች ላይ ሀ መሞከር-በመጨረሻ- ሀ ብቻ ከመሆን ይልቅ አግድ መሞከር-መያዝ ብሎክ

ከዚያ ፣ በ IOException ውስጥ ያለው ኮድ መግለጫው ለየት ያለ ሁኔታ ቢከሰትም ባይሆንም ይተገበራል ፡፡ የ FileNotFoundException መግለጫ በሙከራ ለመያዝ በመጨረሻው መጨረሻ ላይ መምጣት አለበት።

ለምሳሌ ፣ finally ስንጠቀም ፋይልን ለማንበብ ክፍል ፣ ልዩነቱ ቢከሰትም ባይከሰት በሂደቱ መጨረሻ የተከፈተውን ፋይል መዝጋት አስፈላጊ ነው ፡፡ ይህንን ለማረጋገጥ ፋይሉን በ finally ውስጥ እንዲዘጋ ኮዱን ማስቀመጥ እንችላለን መግለጫ

FileReader

ነገር ግን ፣ ከላይ የተጠቀሰውን ኮድ ለማጠናቀር ከሞከሩ ባልተያዘ finally ኮዱ አይሰበሰብም ፡፡ ይህ የሆነበት ምክንያት 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();
}
} }
IOException ዘዴ ክፍል መጣልም ይችላል close(). ስለዚህ ይህንን ክፍል እንደዚህ ባለው በሌላ የሙከራ ክፍል ውስጥ ማስቀመጥ አለብን ፡፡

FileReader

ይጥላል

IOExceptions ን በመጠቀም ስህተቶችን ማስተናገድ ቁልፍ ቃል በጃቫ ውስጥ ቀላል ነው በእውነቱ ፣ በዚህ አካሄድ ውስጥ በእውነቱ በሚከሰትበት ቦታ ላይ ልዩነትን በትክክል አያስተናግዱም ፡፡ በምትኩ ፣ የአሁኑን ዘዴ ወደ ሚጠራው ዘዴ ከአሁኑ ዘዴ ውጭ እንጥለዋለን ፡፡ ከዚያ ስህተቱን መስጠት የውጪው ዘዴ ሀላፊነት ይሆናል ፡፡

አንድን ዘዴ ከአንድ ዘዴ ለመጣል ፣ ይህ ዘዴ የታሰበውን ልዩነት ሊጥል እንደሚችል በቀላሉ ማሳወቅ አለብዎት። እስቲ እንዴት እንደምንይዝ እስቲ እንመልከት 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();

}
}
} }
throws ተወረወረ ይህንን አካሄድ በመጠቀም ክፍል።

ለምሳሌ:

IOExceptions

መወርወር

በዚህ ዝርዝር ውስጥ ካሉ ሌሎች አቀራረቦች በተለየ መልኩ የ FileReader ቁልፍ ቃል ስህተቶችን ለማስተናገድ ጥቅም ላይ አይውልም ፡፡ ግን ብዙ ሰዎች 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();
} }
ን ግራ ስለሚያጋቡ ቁልፍ ቃል በ throw ቁልፍ ቃል ፣ እዚህ መወያየቱ የተሻለ ነው ብለን አሰብን ፡፡

throw ቁልፍ ቃል አንድ ለየት ያለ ሁኔታ ለመጥራት ይጠቅማል ፡፡ አዲስ በቅጽበት የተለየን ወይም በዘዴ ውስጥ የተያዘ ልዩነትን መጣል እንችላለን።

throws

በተጠቃሚ የተገለጹ ልዩነቶች

አብሮገነብ የጃቫ ልዩነቶችን ከመጠቀም በተጨማሪ የራስዎን የማይካተቱ ሊሆኑ ይችላሉ ፡፡ እንደ ወይ እንደተፈተሹ ወይም እንዳልተመረመሩ ሊገል defቸው ይችላሉ ፡፡ አዲስ የተፈተነ ልዩን ለመፍጠር የእርስዎ አዲስ ልዩነት የ | _ _ + _ | ማራዘም አለበት ክፍል

ለመፍጠር ያልተቆለፈ በስተቀር ፣ የ | _ _ + _ | ያራዝሙ ክፍል

በሚከተለው የኮድ ምሳሌ ውስጥ በተጠቃሚ የተገለጸ የተፈተነ ልዩነት ፈጥረናል-

throw

አሁን በፕሮግራማችን አመክንዮ ውስጥ ከላይ የተጠቀሰውን ለየት ያለ ሁኔታ ልንጠቀም እንችላለን ፡፡

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

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

Exception ን በመጠቀም የሕብረቁምፊን ርዝመት ካረጋገጥን ክፍል ፣ አንድ _ _ + _ | ይጥላል የሕብረቁምፊው ርዝመት ከዝቅተኛው ርዝመት በታች ወይም ከከፍተኛው ርዝመት በላይ ከሆነ።

RuntimeException

ከላይ የተጠቀሰውን ኮድ ቅንጥብ ስናከናውን አንድ 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;
} }
ይጥላል እና የሚከተለውን ውጤት እናገኛለን

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


ማጠቃለያ

በዚህ ማጠናከሪያ ትምህርት ውስጥ ለጃቫ ልዩ ​​ሁኔታዎች ፈጣን እና አጭር መግለፅ ለእርስዎ ሰጥተናል ፡፡ የማይካተቱ ምን እንደሆኑ እና እንዴት በጃቫ ፕሮግራምዎ ውስጥ እንዴት እንደሚይዙ አሁን ጥሩ ግንዛቤ እንዳገኙ ተስፋ እናደርጋለን ፡፡