我想从我的RESTendpoint抛出异常。不过,我对好的REST设计技术还不是太熟悉。请考虑以下内容...
//note the throws clause
@POST
public Response saveNewActivity(@HeaderParam("sessionTokenString") String sessionTokenString, Activity activity) throws Exception {
Activity result = as.saveNewActivity(activity);
if (result == null) {
throw new DuplicateDataException("blah blah blah");
}
return Response.ok(result).build();
}
而不是处理异常和显式地只返回响应
@POST
public Response saveNewActivity(@HeaderParam("sessionTokenString") String sessionTokenString, Activity activity) {
try {
Activity result = as.saveNewActivity(activity);
if (result == null) {
throw new DuplicateDataException("blah blah blah");
}
return Response.ok(result).build();
} catch (Exception e) {
return Response.status(Response.Status.SOME_STATUS).build();
}
}
我可以使用ExceptionMapper映射DuplicateDataException,如下所示
public class DuplicateDataExceptionMapper implements ExceptionMapper<DuplicateDataException> {
@Override
public Response toResponse(DuplicateDataException e) {
ErrorMessage errorMessage = new ErrorMessage ("Activity names must be unique.", <HttpStatusNumber>, "<add documentation here>");
return Response.status(Status.NOT_FOUND).entity(errorMessage).build();
}
}
虽然最终还是会返回响应,但是处理异常的一种方式(不管它们是否是RuntimeExceptions)是优先于另一种方式,还是这并不重要?我从来没有在RESTendpoint上看到过throws语句,这就是为什么我问。
如果父类正在捕获抛出的异常并返回适当的HTTP响应错误代码(4xx),那么初始代码就可以了。
如果没有父类捕获这些,使它们变成4xx而不是500,那么您的代码--将响应代码更改为适合这个特定错误的代码--似乎是一个很好的主意。
其他人告诉我,在代码中使用名称空间std;编写
问题内容: 在我的一个项目中,我有两个“数据传输对象” RecordType1和RecordType2,它们从RecordType的抽象类继承。 我希望两个RecordType对象在“ process”方法中由相同的RecordProcessor类处理。我的第一个想法是创建一个通用的处理方法,该方法将两个特定的处理方法委托给以下人员: 我读过Scott Meyers在 Effective C ++
< b >想改进这个问题?通过编辑此帖子添加详细信息并澄清问题。 我很好奇java.util.random是否有种子具有奇怪/令人惊讶的属性。这几乎没有实际用途,但我仍然很好奇。 编辑:奇怪/令人惊讶的属性指的是重复值或非典型模式。
举例说明 Laravel 文档和网上的各种教程,会教授我们一个任务可以使用好几种方法来完成。对于框架设计来说,灵活是件好事,能提供给开发者不同的选项,能让框架适用更多的用户场景。但是对于团队的协同开发来说,大部分时候,更多的选项反而是累赘。 下面来举一个例子说明,假如你在为项目开发 用户授权 相关功能,仅 注册用户权限 这块你就会有以下三个选项: 选项 1. 使用闭包: 你可以在 AuthServ
编译器必须为constexpr的不同路径生成多个函数,这取决于函数的调用方式。所以也许它在使用过载分辨率。 被接受的建议没有提到“sfinae”或“过载分辨率”。 所以我很好奇这两个概念是否适用于“constexpr if”。
我想问一下,在8位内存字段上使用CMPXCHG指令是否在任何方面都比在32位字段上使用它更糟糕。 我用的是C11标准温度。h来实现两种同步方法。