チェックされた例外とチェックされていない例外の違いを理解しています。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
リファレンスとして、 hereの関数シグネチャを読むことができます。
ありがとう。