我似乎对如何抛出异常以及何时用于创建自己的异常感到困惑。
我有这个代码,并想知道我是否采用了正确的方法
继承人的方法:
public void setHireYear(int year) throws Exception {
try{
if (year <= CURRENT_YEAR && year >= CURRENT_YEAR - MAX_YEARS_WORKED) {
hireYear = year;
}
else{
throw new HireYearException(year);
}
}catch(HireYearException e){
e.toString();
}
}
并且继承了异常类:
public class HireYearException extends Exception
{
private int hireYear;
/**
* Constructor for objects of class HireYearException
*/
public HireYearException(int hireYear)
{
this.hireYear = hireYear;
}
public String toString()
{
return "Hire year cannot exceed Current year, your hire year is - " + hireYear;
}
}
为什么抛出自定义异常比抛出预先定义的异常更好?
答案 0 :(得分:0)
特定的海关例外允许您为catch语句分隔不同的错误类型。异常处理的常见构造是:
try
{}
catch (Exception ex)
{}
无论类型如何,都会捕获所有异常。但是,如果您有自定义异常,则可以为每种类型使用单独的处理程序:
try
{}
catch (CustomException1 ex1)
{
//handle CustomException1 type errors here
}
catch (CustomException2 ex2)
{
//handle CustomException2 type errors here
}
catch (Exception ex)
{
//handle all other types of exceptions here
}
因此它为您提供(好处以及创建它的原因)
1.特定的例外允许您更好地控制异常处理
2.为开发人员提供一种类型安全机制来检测错误情况。
3.将情境特定数据添加到例外 理想情况下,这些数据可以帮助其他开发人员追踪错误的来源。
4.现有的例外没有充分描述我的问题