- シグナルのキャッチと処理:
Javaでは、シグナルをキャッチするために
Signal
クラスを使用します。以下の例では、TERM
シグナル(一般的なプロセス終了シグナル)をキャッチして、終了処理を行っています。
import sun.misc.Signal;
import sun.misc.SignalHandler;
public class SignalHandlerExample {
public static void main(String[] args) {
SignalHandler signalHandler = new SignalHandler() {
public void handle(Signal signal) {
// シグナルの処理をここに記述
System.out.println("シグナルを受信しました: " + signal);
// 終了処理などを行う
System.exit(0);
}
};
// TERMシグナルをキャッチする
Signal.handle(new Signal("TERM"), signalHandler);
// ここにメインのプログラムコードを記述
// ...
}
}
- 例外のキャッチと処理:
Javaでは、例外をキャッチして適切な処理を行うことができます。以下の例では、
InterruptedException
をキャッチしてスレッドを停止する方法を示しています。
public class ExceptionHandlingExample {
public static void main(String[] args) {
try {
// スレッドを実行する処理
Thread.sleep(1000);
} catch (InterruptedException e) {
// 例外の処理をここに記述
System.out.println("スレッドが中断されました");
// スレッドの停止などを行う
Thread.currentThread().interrupt();
}
}
}
- エラーハンドリング:
Javaでは、エラーをキャッチして適切な処理を行うこともできます。以下の例では、
Error
をキャッチしてログを出力しています。
public class ErrorHandlingExample {
public static void main(String[] args) {
try {
// エラーを発生させる処理
throw new Error("エラーが発生しました");
} catch (Error e) {
// エラーの処理をここに記述
System.err.println("エラーが発生しました: " + e.getMessage());
// その他の処理などを行う
}
}
}
上記のコード例は、シグナル、例外、およびエラーをキャッチして適切な処理を行う方法を示しています。これらの例を参考にして、自身のプログラムに適した方法を選択してください。