我了解已检查和未检查异常之间的区别。Java 编译器强制程序员要么用 try/catch 块包围检查的异常,要么在方法签名中添加 throw 声明。
但是有时我看到在 Eclipse 中,编译器只给了我一个选项来用 try/catch 块包围语句而不是抛出它。为什么会这样?这是因为在继承层次结构中,类(包含可能产生异常的代码)位于顶部?
例如,我正在为映射器编写一个映射函数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));
}
这是一个非常简单的映射函数,我从一行中提取一个字段并将其长度作为键发出,并将其本身作为值发出。现在,我得到一个抛出的错误Unhandled exception type InterruptedException
,Context.write()
Eclipse 只给了我一个选项,用 try/catch 块包围它,而不是在层次结构中向上抛出它。为什么会这样?
作为参考,您可以阅读Context.write
此处的函数签名。
谢谢。