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

Java 处理方法异常的正确方法?,java,exception,methods,Java,Exception,Methods,对于如何抛出异常以及何时使用它创建自己的异常,我似乎有点困惑 我有这个代码,不知道我是否用了正确的方法 方法如下: public void setHireYear(int year) throws Exception { try{ if (year <= CURRENT_YEAR && year >= CURRENT_YEAR - MAX_YEARS_WORKED) { hireYear = year;

对于如何抛出异常以及何时使用它创建自己的异常,我似乎有点困惑

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

方法如下:

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

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

特定的自定义异常允许您为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.没有任何现有的例外充分描述了我的问题


您不应该在抛出方法中捕获您自己的异常,如果捕获它,则意味着您可以在本地解决问题,因此不再需要异常,否则将异常传播给调用方,并让其中一个调用方法处理异常。因此,请在方法中删除try-catch块。为什么自定义异常不比预定义的异常好?1./不应通过捕获异常来检查验证,请使用单独的验证逻辑。GUI和Web框架通常在这方面帮助您;2./如果您希望有单独的验证逻辑,那么无效的参数选择是程序员错误:使用IllegalArgumentException感谢这对我帮助很大,您希望何时抛出新异常?试着接球然后扔新的有什么不同exception@DaveDiienno这只是复制粘贴的答案,所以请不要投票@达维迪安诺也编辑了see@pbabcdefp也提到了来源,伙计@而且你还没有包括最后4分的来源。无论如何,您可能应该链接到评论中的其他答案,而不是将它们粘贴为您自己的答案。
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
}