Sobes.tech
Junior

Ինչպես ճիշտ նետել արտահայտություններ Java-ում?

sobes.tech AI

Պատասխան AI-ից

Ազատվածքները պետք է նետվեն, երբ տեղի է ունենում ոչստանդարտ իրավիճակ, որը խախտում է ծրագրի նորմալ կատարմանը և պահանջում է անհապաղ մշակում:

Հիմնական սկզբունքներ՝

  • օգտագործեք ազատվածքները սխալների մասին հաղորդելու համար, ոչ թե ընթացքի հոսքի վերահսկման համար:
  • ընտրեք ստանդարտ գրադարանի ամենահարմար ազատվածքի տիպը:
  • ստեղծեք ձեր սեփական ազատվածքի դասեր, երբ ստանդարտները բավարար տեղեկատվություն չեն տալիս:
  • ներառեք ազատվածքի հաղորդագրության մեջ մանրամասն տեղեկություններ սխալի պատճառի մասին, ներառյալ կոնտեքստը:
  • մի բռնեք ազատվածքները, որոնց ճիշտ կերպով չեք կարող մշակել: ավելի լավ է, որ դրանք փոխանցեք վերև, կանչերի շղթայով:
  • օգտագործեք try-with-resources բլոկներ ռեսուրսների ավտոմատ փակման համար:
  • գրանցեք ազատվածքները, որոնց եք մշակել կամ փոխանցում վերև:

ճիշտ սինտաքսը՝ throw new MyException("Սխալի հաղորդագրություն");

Օրինակ՝

// սեփական ազատվածքի ստեղծում
public class InvalidParameterException extends Exception {
    public InvalidParameterException(String message) {
        super(message);
    }
}

// մեթոդ, որը նետում է ազատվածք
public int divide(int a, int b) throws InvalidParameterException {
    if (b == 0) {
        throw new InvalidParameterException("Բաժանում զրոյով արգելվում է");
    }
    return a / b;
}

// մեթոդի օգտագործում և ազատվածքի մշակումը
public void performDivision(int x, int y) {
    try {
        int result = divide(x, y);
        System.out.println("Արդյունք: " + result);
    } catch (InvalidParameterException e) {
        // սխալի գրանցում
        System.err.println("Բաժանման սխալ: " + e.getMessage());
        // հնարավոր է, լրացուցիչ մշակում կամ փոխանցում
    }
}

Checked և Unchecked ազատվածքների տարբերությունները՝

Տիպ ժառանգություն պահանջվում է մշակել/հայտարարել Օրինակ
Checked Exception (բացառությամբ RuntimeException) Այո (try-catch կամ throws) IOException, SQLException
Unchecked RuntimeException Ոչ (կոմպիլյատորը չի պահանջում) NullPointerException, ArrayIndexOutOfBoundsException