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
catchvà 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
catchvà viết câu lệnh ở cuối phương thức sau lệnhreturn, 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
finallythì không cần giữ lệnhreturnở 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