Loading...

Исключенияларды иштетүү

 

Throws оператору

Кээде өзгөчөлүктү таштаса боло турган ыкма өзүнчө өзгөчөлүктү чечпейт. Бул учурда методдун жарыялоосунда throws оператору колдонулат, ал метод чакырылганда иштетилиши керек. Мисалы, бизде фактордук эсептөө ыкмасы бар жана 1ден аз сан методго өтүп кетсе, кырдаалды чечишибиз керек:

public static int getFactorial(int num) throws Exception{

    

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

    int result=1;

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

             

        result*=i;

    }

    return result;

}

Throw оператору шарттуу түрдө өзгөчө учурду жаратат. Ошол эле учурда, методдун өзү try..catch аркылуу бул өзгөчөлүктү чечпейт, ошондуктан методдун аныктамасында throws Exception туюнтмасы колдонулат.

 

Эми, бул ыкманы чакырганда, биз ыргытылган өзгөчөлүктү чечишибиз керек:

public static void main(String[] args){

        

    try{

        int result = getFactorial(-6);

        

        System.out.println(result);

    }

    catch(Exception ex){

        

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

    }

}

Өзгөчө жагдайды колдонбосок, бизде компиляция катасы пайда болот жана биз программаны түзө албайбыз.

 

Же болбосо, биз throws операторун колдоно алган жокпуз, бирок өзгөчө жагдайды түздөн-түз методдо иштете алабыз:

public static int getFactorial(int num){

    

    int result=1;

    try{

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

        

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

            

            result*=i;

        }

    }

    catch(Exception ex){

        

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

        result=num;

    }

    return result;

}