tôi phải phân tích một chuỗi mà có thể giả định giá trị hex hoặc các giá trị phi hex khácCó đang đánh bắt NumberFormatException là một thực tế không tốt?
0xff
, 0x31
hoặc A
, PC
, label
, và vân vân.
tôi sử dụng mã này để phân chia hai trường hợp:
String input = readInput();
try {
int hex = Integer.decode(input);
// use hex ...
} catch (NumberFormatException e) {
// input is not a hex, continue parsing
}
mã này có thể được coi là "xấu xí" hoặc khó đọc? Có giải pháp nào khác (có thể thanh lịch hơn) không?
EDIT: Tôi muốn làm rõ rằng (trong trường hợp của tôi) nhập sai không tồn tại: tôi chỉ cần phân biệt nếu đó là số hex hay không. Và chỉ để hoàn thành, tôi đang thực hiện một assebler đơn giản cho DCPU-16.
Đây không nhất thiết phải là thực hành không tốt, nhưng nó có thể giúp hiển thị cho chúng tôi thông tin đầu vào trông như thế nào. IMO, bạn có thể ** không bao giờ ** làm đủ kiểm tra lỗi. –
Tôi nghĩ rằng nó xấu xí và khó đọc, nhưng không có giải pháp nào tốt hơn. Đó là một trong những lý do tôi không thích ngoại lệ đã kiểm tra http://c2.com/cgi/wiki?TheProblemWithCheckedExceptions –
Bạn có thể tìm thấy [câu hỏi này] (http://stackoverflow.com/q/5378005/387852) có liên quan . –