Tình hình là dạo này đang rảnh nên ngồi lê la các diễn đàn thì mình thấy có đoạn code sau
public class TryCatchFinallyDemo {
public static void main(String[] args) {
String text = "001234A2";
int value = toInteger(text);
System.out.println("Value= " + value);
}
public static int toInteger(String text) {
try {
System.out.println("Begin parse text: " + text);
// Tại đây có thể gây ra ngoại lệ NumberFormatException.
int value = Integer.parseInt(text);
return value;
} catch (NumberFormatException e) {
// Trong trường hợp 'text' không phải là một số.
// Khối catch này sẽ được thực thi.
System.out.println("Number format exception " + e.getMessage());
// Khi NumberFormatException xẩy ra, trả về 0.
return 0;
} finally {
System.out.println("End parse text: " + text);
}
}
}
và kết quả như sau
Begin parse text: 001234A2
Number format exception For input string: "001234A2"
End parse text: 001234A2
Value= 0
Tại sao khi đã return rồi mà nó vẫn chạy tiếp được nhỉ, trong finally mình cho return ra 1 giá trị khác vẫn được, mà không hề bị deadcode?