Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Có thể có lệnh return trong khối catch hoặc finally trong Java không?


Có, chúng ta có thể viết lệnh return của phương thức trong khối catch và finally.

  • Có tình huống phương thức có kiểu trả về và chúng ta có thể trả về giá trị tại bất kỳ phần nào của phương thức dựa trên điều kiện.
  • Nếu trả về giá trị trong khối catch và cũng trả về giá trị ở cuối phương thức, mã sẽ thực thi thành công.
  • Nếu trả về giá trị trong khối catch và viết câu lệnh ở cuối phương thức sau lệnh return, mã sẽ không thực thi nên trở thành mã không thể truy cập (unreachable code) – Java không hỗ trợ mã không thể truy cập.
  • Nếu trả về giá trị trong khối finally thì không cần giữ lệnh return ở cuối phương thức.

Ví dụ 1: return trong catch

public class CatchReturn {
    int calc() {
        try {
            int x = 12 / 0;
        } catch (Exception e) {
            return 1;
        }
        return 10;
    }
    public static void main(String[] args) {
        CatchReturn cr = new CatchReturn();
        System.out.println(cr.calc());
    }
}

Kết quả

1

Ví dụ 2: return trong finally

public class FinallyReturn {
    int calc() {
        try {
            return 10;
        } catch (Exception e) {
            return 20;
        } finally {
            return 30;
        }
    }
    public static void main(String[] args) {
        FinallyReturn fr = new FinallyReturn();
        System.out.println(fr.calc());
    }
}

Kết quả

30