Sobes.tech
Junior

Чӣ гуна шумо истисноҳоро боло дар стеки зангҳо мебароред?

sobes.tech AI

Ҷавоб аз AI

Ман throw калит сўзидан фойдаланаман, бу орқали истиснони қайта юбориш ёки янги истисно яратиш.

public void method1() throws CustomException {
    try {
        // Бирор код, у AnotherException чиқариши мумкин
        method2();
    } catch (AnotherException e) {
        // AnotherException ни тутамиз
        // Уни CustomException ичига ораб, юқорига юбориб қўямиз
        throw new CustomException("Method2да хатолик: " + e.getMessage(), e);
    }
}

public void method2() throws AnotherException {
    // Бирор код, истисно чиқариши мумкин
    throw new AnotherException("Нимадир нотўғри бўлди Method2да");
}

class CustomException extends Exception {
    public CustomException(String message, Throwable cause) {
        super(message, cause);
    }
}

class AnotherException extends Exception {
    public AnotherException(String message) {
        super(message);
    }
}

Ёки, агар фақат ушланган истиснони юқорига юборишни истасангиз, янги яратишга ҳожат йўқ:

public void methodA() throws SomeException {
    try {
        methodB();
    } catch (SomeException e) {
        // Логлаш ёки бошқа ҳаракатлар
        // Ҳамма истиснони юқорига юбориш
        throw e;
    }
}

public void methodB() throws SomeException {
    // SomeException чиқариши мумкин
    throw new SomeException("MethodBда хатолик");
}

class SomeException extends Exception {
    public SomeException(String message) {
        super(message);
    }
}