正确处理方法异常的方法?

时间:2015-04-24 19:01:07

标签: java exception methods

我似乎对如何抛出异常以及何时用于创建自己的异常感到困惑。

我有这个代码,并想知道我是否采用了正确的方法

继承人的方法:

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;
}
}

为什么抛出自定义异常比抛出预先定义的异常更好?

1 个答案:

答案 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.现有的例外没有充分描述我的问题

Source