为方法创建异常
Creating an Exception for a method
你好,我还是编程新手,我最近了解了异常以及定义异常比使用通用异常更好的方法。我研究过并了解创建异常的基本思想,例如使用 String 和 Throwable。但是,当涉及到这样的代码时:
public void sendEnvironmentExport(Environment env) throws Exception {
if (details == null) {
details = new CurrentUserDetails();
details.setPrincipal(dao.loadUser(UserServiceImpl.SYSTEM_USERNAME));
}
for (String reportDescriptor : env.getExportReports()) {
// methodName|recipient@address.com
String[] parts = reportDescriptor.split("\|");
if (parts.length == 2) {
Method m = this.getClass().getMethod(parts[0], String.class);
m.invoke(this, parts[1]);
} else {
logger.warn("Ignoring invalid Environment.getExportReports.report: " + reportDescriptor);
}
}
}
我不知道从哪里开始创建和异常。所以基本上我的问题是。在这些情况下,是定义和异常更好还是使用通用的更好?
抱歉,如果我问的问题不明确,我只是想了解是否需要为这样的方法定义异常,如果抛出异常,则没有明确的区域。
在大多数情况下,最好使用从最接近的通用异常扩展而来的特定异常,除非有预定义的 Java 异常可以准确提供您想要提供的信息。使用自定义的原因是可以以非常具体的方式处理异常。即使一个方法可以抛出多个相似但仍然不同的自定义异常,也可以轻松地单独处理每个异常或同时处理所有异常(通过处理超类异常)。
有许多不同的处理异常的策略。一些开发人员只使用 RuntimeExceptions,一些开发人员只使用标准异常,一些开发人员定义一些一般异常,比如每层一个,而其他开发人员为每个可能的错误定义异常。这实际上是一个偏好和阶梯的问题。
可以这样创建异常:
public class MyException extends RuntimeException{
private static final long serialVersionUID = 1L;
}
可以这样扔:
throw new MyException();
然后像这样咳嗽:
try {
throw new MyException();
} catch (MyException e) {
e.printStackTrace();
}
你好,我还是编程新手,我最近了解了异常以及定义异常比使用通用异常更好的方法。我研究过并了解创建异常的基本思想,例如使用 String 和 Throwable。但是,当涉及到这样的代码时:
public void sendEnvironmentExport(Environment env) throws Exception {
if (details == null) {
details = new CurrentUserDetails();
details.setPrincipal(dao.loadUser(UserServiceImpl.SYSTEM_USERNAME));
}
for (String reportDescriptor : env.getExportReports()) {
// methodName|recipient@address.com
String[] parts = reportDescriptor.split("\|");
if (parts.length == 2) {
Method m = this.getClass().getMethod(parts[0], String.class);
m.invoke(this, parts[1]);
} else {
logger.warn("Ignoring invalid Environment.getExportReports.report: " + reportDescriptor);
}
}
}
我不知道从哪里开始创建和异常。所以基本上我的问题是。在这些情况下,是定义和异常更好还是使用通用的更好?
抱歉,如果我问的问题不明确,我只是想了解是否需要为这样的方法定义异常,如果抛出异常,则没有明确的区域。
在大多数情况下,最好使用从最接近的通用异常扩展而来的特定异常,除非有预定义的 Java 异常可以准确提供您想要提供的信息。使用自定义的原因是可以以非常具体的方式处理异常。即使一个方法可以抛出多个相似但仍然不同的自定义异常,也可以轻松地单独处理每个异常或同时处理所有异常(通过处理超类异常)。
有许多不同的处理异常的策略。一些开发人员只使用 RuntimeExceptions,一些开发人员只使用标准异常,一些开发人员定义一些一般异常,比如每层一个,而其他开发人员为每个可能的错误定义异常。这实际上是一个偏好和阶梯的问题。
可以这样创建异常:
public class MyException extends RuntimeException{
private static final long serialVersionUID = 1L;
}
可以这样扔:
throw new MyException();
然后像这样咳嗽:
try {
throw new MyException();
} catch (MyException e) {
e.printStackTrace();
}