在一次采访中,我最近被问到以下问题:
有没有其他方法可以创建自定义的异常
,而不使用扩展
:
异常
的子类,用于检查异常RuntimeExctive
或RuntimeExctive
的子类。可能的答案是什么?
可以扩展类Throwable。
让我们创建一个自定义ResourceReadyExistsException类。它将扩展RuntimeException类,您可以向其中添加任意多个参数。我一直这么简洁。
public class ResourceAlreadyExistsException extends RuntimeException {
public ResourceAlreadyExistsException(String property, String value) {
super(String.format(
"Resource with property %s and value %s already exists." +
"Make sure to insert a unique value for %s",
property, value, property));
}
}
每当我需要检查一个唯一的资源时,我可以告诉用户哪个特定的属性具有导致错误的值。此外,我通知用户必须采取什么行动来避免错误。
比如说,我选择使用error***作为我的ResourceReadyExistsException。不过,我需要将此错误消息连接到ExceptionResponseHandler。额外的方法与我们通常为处理所有异常而创建的方法非常相似。事实上,对于所有异常,您都可以轻松地复制粘贴此方法。您所要做的就是将Exception类更改为Exception并更改HttpStatus<代码>
@ExceptionHandler(ResourceAlreadyExistsException.class)
public final ResponseEntity<ExceptionResponse> handleResourceAlreadyExistsException(
ResourceAlreadyExistsException ex, WebRequest req) {
ExceptionResponse exceptionResponse = new ExceptionResponse(
new Date(),
ex.getMessage(),
req.getDescription(false)
);
return new ResponseEntity<>(exceptionResponse, HttpStatus.UNPROCESSABLE_ENTITY);
不使用扩展异常类是不可能做到的。但是你可以在没有显式扩展的情况下实现它...某种程度上。
public class Test {
public void method() {
throw new RuntimeException() {};
}
}
上面声明并抛出RuntimeExctive
的匿名子类。
当然,这是一件毫无意义的事情。由于该类是匿名的,因此不能在throws
子句中命名它,也不能在异常处理程序中按名称处理它。
另请参阅:在Java中抛出匿名异常
或者,您可以扩展Error
,这是Error
的子类,或者<代码>可丢弃的。但你不应该。
Error
异常通常被认为是由JVM或标准库1定义和抛出的。因此,Error
层次结构中的自定义子类(至少可以说)令人惊讶。Throwable
,您将有责任打破代码,该代码假定异常
和Error
是Throwable
的唯一子类。1-这不是javadoc所说的...但是人们认为是这样的。
问题内容: 如何在Java中创建自定义异常? 问题答案: 要定义受检查的异常,请创建的子类(或子类的层次结构)。例如: 可能引发或传播此异常的方法必须声明它: …,并且调用此方法的代码必须处理或传播此异常(或同时处理): 你会在上面的示例中注意到该错误IOException已被捕获并重新抛出为。这是用于封装异常的常用技术(通常在实现API时)。 有时在某些情况下,你不想强制每个方法在其throws
问题内容: 我正在使用Axis2 1.5.2和Eclipse。我正在使用Eclipse从生成的WSDL生成WSDL和客户端代码。 我创建了一个服务可以抛出的自定义异常。创建Web服务时一切正常。Web服务成功启动,并且可以通过指向Web浏览器来查看生成的WSDL。但是,当我告诉Eclipse使用生成的WSDL生成客户端代码时,我从Eclipse中得到了以下错误: 我的自定义异常是“ InsertU
我创建了一个小的测试项目来测试我的实现,下面是我的异常类头文件。 异常类的源文件为 在我的主应用程序中,我调用了一个函数,该函数抛出我的异常,并在try/catch中捕获它,如下所示: 现在要跑了。哦,天哪,我需要抛出一个异常 捕获的异常:这是我的异常错误。:( 相反,我得到的是 从我在各种帖子上看到的情况来看,我所做的是正确的,所以我错过了什么。
问题内容: 有没有一种方法可以JButton用您自己的按钮图形而不是仅在按钮内部创建图像? 如果没有,是否还有另一种方法可以JButton在Java中创建自定义? 问题答案: 当我第一次学习Java时,我们不得不制造Yahtzee,我认为创建自定义的Swing组件和容器会很酷,而不仅仅是在一个组件上绘制所有内容JPanel。Swing当然,扩展组件的好处是能够添加对键盘快捷键和其他辅助功能的支持,
问题 在你构建的应用程序中,你想将底层异常包装成自定义的异常。 解决方案 创建新的异常很简单——定义新的类,让它继承自 Exception (或者是任何一个已存在的异常类型)。 例如,如果你编写网络相关的程序,你可能会定义一些类似如下的异常: class NetworkError(Exception): pass class HostnameError(NetworkError):
我想用java为创建自定义注释。我想用这个注释比较两个字符串值,比较后会返回一个