java - IDE 强制用 try/catch 包围而不抛出异常

标签 java exception exception-handling try-catch

我了解已检查异常和未检查异常之间的区别。 Java 编译器强制程序员要么用 try/catch block 包围已检查的异常,要么在方法签名中添加 throw 声明。

但是有时我看到在 Eclipse 中,编译器只给我一个选项,用 try/catch block 包围语句而不抛出它。为什么会这样?这是因为在继承层次结构中,类(包含可能产生异常的代码)位于顶部吗?

例如,我正在为 Hadopp 映射器编写映射函数:

public void map(BytesWritable key, Text value, Context context) {
    String[] fields = value.toString().split("\t");
    String referrer = fields[10];
    context.write(new LongWritable(referrer.length()), new Text(
                    referrer));
}

这是一个非常简单的映射函数,我从一行中提取一个字段并将它的长度作为键发出,并将它本身作为值发出。现在,我收到 Context.write() 抛出的错误 Unhandled exception type InterruptedException,Eclipse 只给我一个选项,用 try/catch block 包围它而不抛出它在层次结构中向上。为什么会这样?

作为引用,您可以阅读Context.write 的函数签名here .

谢谢。

最佳答案

throws 是方法签名的一部分。如果要定义抽象方法,则必须遵守其签名。您不能在实现时添加 throws

关于java - IDE 强制用 try/catch 包围而不抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893267/

相关文章:

java - 使用 sql2o 在关闭连接之前执行更多查询

java - 子菜单出现在用户界面中(我可以看到它)。但是,当我尝试以编程方式访问它时,我没有得到该子菜单

XamlParseException 无法分配给属性。绑定(bind)不适用于附加属性

gwt - 使用跨站点支持编译 GWT 代码时出错

java - scheduleWithFixedDelay 抛出异常如何重启schedule?

java - 当特定 jsp 仅使用 "../folder/image.jpg"运行时,为什么 'right-click-> run on server' 可以工作

java - 为什么使用@Query (“” )操作Elasticsearch并报错(org.elasticsearch.common.ParsingException : no [query] registered for [query])

c++ - 异常: 'Access violation reading location'

exception - 处理器是否有实际电路来帮助异常处理?

javascript - `throw new Error` 和 `throw someObject` 有什么区别?