java - RuntimeExceptions 的进位抛出声明

标签 java exception defensive-programming

假设我有一个方法或构造函数,它在内部使用了另一个声明可以抛出 RuntimeException 的方法或构造函数。

// Example:
public MyClass(Object arg) {
    setVar(arg);
    // Not responsible for dealing with the exception
}

public void setVar(Object arg) throws MyRuntimeException {
    if(!isValidArg(arg))
        throw new MyRuntimeException("Got you, evil argument!");
    // Do something
}

在这种情况下,如果未满足必要的先决条件,则会抛出 RuntimeException。

问:如果包装方法/构造函数的参数可能导致抛出异常,那么它是否应该声明相同的异常?

最佳答案

这实际上取决于代码所在的上下文。如果您想制作一些自包含的东西,例如库,您可能希望捕获类内的异常,只是为了使代码的使用更清晰.

但是,如果您将代码作为项目的一部分编写,那么正如您所说,我会“携带抛出异常”,直到它在语义上没有意义为止。

关于java - RuntimeExceptions 的进位抛出声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294149/

相关文章:

java - 将 KeyEvent 发布到焦点组件

exception - javax.persistence.PersistenceException : Unable to build entity manager factory

javascript - 抛出异常时不要停止 JavaScript

C++ 防御性编程 : reading from a buffer with type safety

ruby - 如何在 Ruby 中进行防御性编程?

java - 在hadoop中reduce后处理数据

java - 与SVN服务器交互的API?

java - 删除字符串中最后一个已知单词

C++ Template Linked List storing Class Objects - Unhandled Exception Access Violation 读取位置

language-agnostic - 您如何管理应用程序的外部依赖项?