Դաս 19.1։ Java – Exceptions

0

 

Բացառության հիերարխիան/Exception Hierarchy

Բոլոր բացառությունները(exception class) java.lang.Exception դասի ենթատիպերն են: Բացառության դասը Throwable դասի ենթադասն է: Բացառության դասից բացի, կա ևս մի ենթադաս։ Այն կոչվում է Error և բխում է Throwable դասից:

Սխալները կամ Error-ները ոչ նորմալ պայմաններ են, որոնք տեղի են ունենում լուրջ խափանումների դեպքում և չեն կառավարվում Java ծրագրերի կողմից: Սխալները գեներացվում են runtime environment-ի կողմից՝ առաջացած սխալները մատնանշելու համար: Օրինակ՝ JVM-ն հիշողության պակաս ունի: Սովորաբար, ծրագրերը չեն կարող վերականգնվել այս սխալներից:

Բացառության դասը/ Exception class-ը ունի երկու հիմնական ենթադաս: IOException և RuntimeException-ը:

exceptions1

Հետևյալը Java-ի՝ ամենատարածված ստուգված և չստուգված բացառությունների ցանկն է։

Exceptions Methods/ Բացառությունների մեթոդներ

Ստորև ներկայացված է Throwable դասում առկա կարևոր մեթոդների ցանկը։

Sr.No.

Method & Description

1

public String getMessage()

Վերադարձնում է մանրամասն հաղորդագրություն առաջացած բացառության մասին: Այս հաղորդագրությունը սկզբնավորվել է Throwable կոնստրուկտորում:

2

public Throwable getCause()

Վերադարձնում է բացառության պատճառը, որը ներկայացված է Throwable օբյեկտի կողմից:

3

public String toString()

Վերադարձնում է getMessage () արդյունքում համակցված դասի անունը:

4

public void printStackTrace()

Արտատպում է toString() արդյունքը System.err-ի հետ միասին։

5

public StackTraceElement [] getStackTrace()

Վերադարձնում է զանգվածը, որը պարունակում է stack trace յուրաքանչյուր էլեմենտը:

6

public Throwable fillInStackTrace()

Լրացնում է այս Throwable օբյեկտի stack trace ընթացիկ stack trace ով, ավելացնելով նախորդ stack trace տեղեկությունները։

Բացառություններ հայտնաբերում/ Catching Exceptions

Մեթոդը որսում է բացառությունը try և catch բանալի բառերի կոմբինացիան օգտագործելով։ try/catch բլոկը տեղադրվում է կոդի շուրջ, որը կարող է գեներացնել բացառություն: try/catch բլոկով կոդը համարվում է պաշտպանված կոդ։ try/catch-ով հավաքված կոդի շարահյուսությունը հետևյալն է՝

Syntax

try {

// Protected code

} catch (ExceptionName e1) {

// Catch block

}

Կոդը, որը հակված է բացառությունների, տեղադրված է try block-ում՝ փորձարկման բլոկում: Երբ առաջանում է բացառություն է, այն կարգավորվում է catch block-ի կողմից։ Յուրաքանչյուր try block-ի պետք է անմիջապես հաջորդի catch block կամ finally block։ catch statement-ը հայտնում է նաև բացառության տեսակի մասին, որը փորձում եք որսալ: Եթե բացառությունը առաջանում է պաշտպանված կոդում try block-ին հաջորդող catch block-ը ստուգման է ենթարկվում։ Եթե առաջացված բացառության տիպը նշված է catch block-ում, բացառությունը փոխանցվում է catch block-ին։

Օրինակ

Հետևյալը 2 տարրերով հայտարարված զանգված է: Այնուհետև կոդը փորձում մուտք գործել դեպի զանգվածի 3-րդ տարրը, որն է գեներացնում է բացառություն:

// File Name : ExcepTest.java

import java.io.*;

 

public class ExcepTest {

 

public static void main(String args[]) {

try {

int a[] = new int[2];

System.out.println(“Access element three :” + a[3]);

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println(“Exception thrown :” + e);

}

System.out.println(“Out of the block”);

}

}

Արդյունքը՝

Exception thrown :java.lang.ArrayIndexOutOfBoundsException: 3

Out of the block

Բազմակի Catch Block-եր

Փորձարկման բլոկին/ try block-ին կարող են հաջորդել բազմաթիվ Catch Block-եր: Բազմակի Catch Block-երի շարադասությունը ունի հետևյալ տեսքը՝

Syntax

try {

// Protected code

} catch (ExceptionType1 e1) {

// Catch block

} catch (ExceptionType2 e2) {

// Catch block

} catch (ExceptionType3 e3) {

// Catch block

}

Վերը նշված հայտարարությունը ներկայացնում է երեք catch block-երը, դուք իհարկե կարող եք ունենալ ցանկացած քանակի catch block-եր: Եթե բացառություն տեղի է ունենում պաշտպանված կոդում, ապա բացառությունը ուղղարկվում է ցուցակում առաջի catch block-ին։ Եթե բացառության տեսակը համապատասխանում է ExceptionType1-ին, այն կարգավորվում է այնտեղ է: Եթե ոչ, ապա այն փոխանցվում է երկրորդ catch statement-ին: Սա շարունակվում է այնքան, քանի դեռ բացառությունը չի կարգավորվում կամ անցնում բոլոր catch block-երով, որի դեպքում ընթացիկ մեթոդը դադարում է կատարումը, և բացառությունը անցնում է նախորդ մեթոդին։

Օրինակ

Ահա կոդի մի հատված, որը ցույց է տալիս, թե ինչպես օգտագործել բազմակի try/catch statement-ները։

try {

file = new FileInputStream(fileName);

x = (byte) file.read();

} catch (IOException i) {

i.printStackTrace();

return 1;

} catch (FileNotFoundException f) // Not valid! {

f.printStackTrace();

return 1;

}

Բազմատեսակ բացառությունների որսում/ Catching Multiple Type of Exceptions

Սկսված Java 7-ից, դուք կարող եք կարգավորել մեկից ավելի բացառություններ, օգտագործելով միայն մեկ catch block, այս հատկությունը, իհարկե, պարզեցնում է կոդը: Ահա թե ինչպես՝

catch (IOException|FileNotFoundException ex) {

logger.log(ex);

throw ex;

Հարգելի ընթերցող, խնդրում ենք չմոռանալ like տալ մեր ֆեյսբուքյան էջին, քանի որ նորությունների մեծ մասը առաջինը տեղադրվում է հենց այնտեղ։ Ինչպես նաև հետևեք մեզ այլ սոցիալական ցանցերում և, իհարկե, գրանցվեք մեր բլոգում։

Share.