01/10/2018, 00:29
Ai giải thích cho mình rõ về ngoại lệ do người dùng tạo với. JAVA
mình làm như này:
package bai3;
import java.util.InputMismatchException;
import java.util.Scanner;
public class SinhVien {
private int ngay;
private int thang;
private int nam;
public int getNgay() {
return ngay;
}
public void setNgay(int ngay) throws DateException {
if (ngay < 1 || ngay > 31) {
throw new DateException();
}
this.ngay = ngay;
}
public int getThang() {
return thang;
}
public void setThang(int thang) throws DateException {
if (thang < 1 || thang > 12) {
throw new DateException();
}
this.thang = thang;
}
public int getNam() {
return nam;
}
public void setNam(int nam) throws DateException {
if (nam > 2016) {
throw new DateException();
}
this.nam = nam;
}
public static void main(String[] args) {
SinhVien sva = new SinhVien();
boolean check = false;
while (!check) {
try {
System.out.println("Nhap ngay sinh");
sva.setNgay(new Scanner(System.in).nextInt());
System.out.println("Nhap thang");
sva.setThang(new Scanner(System.in).nextInt());
System.out.println("Nhap nam");
sva.setNam(new Scanner(System.in).nextInt());
check = true;
} catch (DateException e) {
System.out.println(e.getMessage());
} catch (InputMismatchException e) {
System.out.println("Loi, moi nhap lai");
}
}
System.out.println(
"ngay thang nam sinh vua nhap la: " + sva.getNgay() + "-" + sva.getThang() + "-" + sva.getNam());
}
}
và DateException đây:
package bai3;
public class DateException extends Exception {
public DateException() {
}
@Override
public String getMessage() {
// TODO Auto-generated method stub
return ("lỗi, cần phải nhập đúng ngày, tháng, năm");
}
}
mình làm như vậy là để thêm mỗi cái getMessage, khi lỗi thì tạo ra một đối tượng ngoại lệ và sau đó getMessage, ở đoạn set ngay tháng năm thì phải dùng if(…) sau đó throw rất là rắc rối,
Liệu mình có thể viết như thế nào ngay vào trong class DateException được không rồi sau đó try catch giống như với ArithmeticException,… có sẵn đó
Bài liên quan
Như này?