Loading...

Өзүбүздүн исключения класстарын түзүү

 

Java стандарттык класс китепканасында берилген өзгөчө класстар программаны аткаруу учурунда пайда боло турган өзгөчөлүктөрдүн көбүн сүрөттөсө да, сиз өз логикаңыз менен өзүңүздүн өзгөчө класстарыңызды түзүшүңүз керек болгон учурлар болот.

 

Өзүңүздүн өзгөчө классыңызды түзүү үчүн, сиз аны Exception классынан мурасташыңыз керек. Мисалы, бизде факториалды эсептеген класс бар жана методго өткөн сан 1ден аз болсо, өзгөчө өзгөчөлүктү ташташыбыз керек:

class Factorial{

 

    public static int getFactorial(int num) throws FactorialException{

    

        int result=1;

        if(num<1) throw new FactorialException("The number is less than 1", num);

        

        for(int i=1; i<=num;i++){

            

            result*=i;

        }

        return result;

    }

}

 

class FactorialException extends Exception{

 

    private int number;

    public int getNumber(){return number;}

    public FactorialException(String message, int num){

    

        super(message);

        number=num;

    }

}

Бул жерде факториалды эсептөө менен байланышкан катаны аныктоо үчүн Exceptionдан мураска алынган жана эсептөө жөнүндө бардык маалыматты камтыган FactorialException классы аныкталат. FactorialException конструкторунда ката кабары Exception базалык классынын конструкторуна берилет: super(билдирүү). Мындан тышкары, факториалы эсептелип жаткан санды сактоо үчүн өзүнчө талаа иштелип чыккан.

Факториялык эсептөө методунда өзгөчө кырдаалды түзүү үчүн, ыргытуу оператору аркылуу өзгөчө учур чыгарылат: throw new FactorialException("Сан 1ден кем болбошу керек", num). Ошондой эле, бул өзгөчөлүк try..catch тарабынан иштелбегендиктен, биз иштетүүнү throws операторунун жардамы менен чакыруу ыкмасына өткөрүп беребиз: public static int getFactorial(int num) throws FactorialException

 

Эми биз классты негизги методдо колдонобуз:

public static void main(String[] args){

        

    try{

        int result = Factorial.getFactorial(6);

        System.out.println(result);

    }

    catch(FactorialException ex){

        

        System.out.println(ex.getMessage());

        System.out.println(ex.getNumber());

    }

}