これは例外処理の例ですか?
try{
...
} catch (InterruptedException e) {
System.out.println("Item "+id+": interrupted!");
}
それはいつ起こるのでしょうか?つまり、どのように例外をトリガーする必要がありますか?
どうもありがとう
これは例外処理の例ですか?
try{
...
} catch (InterruptedException e) {
System.out.println("Item "+id+": interrupted!");
}
それはいつ起こるのでしょうか?つまり、どのように例外をトリガーする必要がありますか?
どうもありがとう
はい - それは例外処理です。例外をキャッチし、呼び出しツリーに戻すのではなく、そこで何かを行いました。
例外を無視する (注意してください)、例外をログに記録する、または例外を追加情報でラップする場合は、これを行うことができます。
例外は、スローされるほどトリガーされません-たとえば
if (variable==null){
throw new NullPointerException("Variable cannot be null!");
}
例外に関するJavaチュートリアルをご覧になることをお勧めします
ここで、finally 句を忘れてはならないことに注意してください。finally 句は、例外がスローされたりキャッチされたりするかどうかに関係なく実行するコード (クリーンアップ コードなど) を配置する場所です。
例外処理とは、コードの通常の実行で問題が発生する可能性があるものに対応していることを意味します。一部のメソッドが例外を「スロー」することに気付くでしょう。つまり、何か問題が発生する可能性があることを即座に伝えているため、コードでそれに対処する方法を準備する必要があります。
その一例は、FileIO を使用してファイルを読み書きすることです。その操作でうまくいかないことがたくさんあるかもしれません(あなたのせいではありません)。ファイルへのパスが無効である可能性があります。OS がファイルをロックしていて、現在使用できないなどの可能性があります。そのため、アプリがクラッシュするのではなく、できる限り例外を管理し、うまくいけば先に進みます。
あなたが扱っている InterruptedException は、主にマルチスレッド環境で、待機中またはスリープ中、または一時停止しているトレッドが何らかの形で中断されたときに発生します。どのように対処するかは完全にあなた次第です。推奨されていませんが、例外がキャッチされて無視される場合があります。ユースケースに応じて、例外をどのように管理するかは、アプリにとって意味のあるものである必要があります。
はい、そうです。try/catch の間を明確にするように注意してください。例外がスローされた場合、どこで、なぜこれが発生したのかを理解する必要があります。try/catch で囲むことは、「エラーが発生した場合、「危険な」ことをしているという意味です。