Java : Exception (チェック例外) - API使用例
Exception (Java SE 22 & JDK 22) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。
概要
注意:
-
通常のプログラムでは Exception を直接作成することはおすすめしません。
(catch のときに RuntimeException と区別ができなくなるため) -
Exception の代わりに Exception のサブクラスを使いましょう。
-
本記事では SampleException というサブクラスを使い、それをメインにコード例を記載していきます。
関連 : 例外 vs. 戻り値でエラーチェック
@SuppressWarnings("serial")
public class SampleException extends Exception {
public SampleException() {
}
public SampleException(String message) {
super(message);
}
public SampleException(String message, Throwable cause) {
super(message, cause);
}
public SampleException(Throwable cause) {
super(cause);
}
public SampleException(String message, Throwable cause,
boolean enableSuppression,
boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
public class Main {
public static void main(String[] args) {
try {
func1();
} catch (SampleException ex) {
final Exception e = ex;
e.printStackTrace();
// 結果
// ↓
//SampleException
// at Main.func2 ...
// at Main.func1 ...
// at Main.main ...
// ...
}
}
private static void func1() throws SampleException {
func2();
}
private static void func2() throws SampleException {
throw new SampleException();
}
}
コンストラクタ
Exception ()
final Exception e = new SampleException();
System.out.println(e); // SampleException
Exception (String message)
final Exception e = new SampleException("abcde");
System.out.println(e); // SampleException: abcde
System.out.println(e.getMessage()); // abcde
Exception (String message, Throwable cause)
final Exception cause = new SampleException("XYZ");
final Exception e = new SampleException("abcde", cause);
System.out.println(e); // SampleException: abcde
System.out.println(e.getMessage()); // abcde
System.out.println(e.getCause()); // SampleException: XYZ
System.out.println(e.getCause().getMessage()); // XYZ
Exception (String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
final Exception cause = new SampleException("XYZ");
final Exception e = new SampleException("abcde", cause, true, true);
System.out.println(e); // SampleException: abcde
System.out.println(e.getCause()); // SampleException: XYZ
e.addSuppressed(new SampleException("E1"));
e.addSuppressed(new SampleException("E2"));
// [SampleException: E1, SampleException: E2]
System.out.println(Arrays.toString(e.getSuppressed()));
System.out.println(e.getStackTrace().length > 0); // true
// enableSuppression = false
final Exception cause = new SampleException("XYZ");
final Exception e = new SampleException("abcde", cause, false, true);
System.out.println(e); // SampleException: abcde
System.out.println(e.getCause()); // SampleException: XYZ
e.addSuppressed(new SampleException("E1"));
e.addSuppressed(new SampleException("E2"));
System.out.println(Arrays.toString(e.getSuppressed())); // []
System.out.println(e.getStackTrace().length > 0); // true
// writableStackTrace = false
final Exception cause = new SampleException("XYZ");
final Exception e = new SampleException("abcde", cause, true, false);
System.out.println(e); // SampleException: abcde
System.out.println(e.getCause()); // SampleException: XYZ
e.addSuppressed(new SampleException("E1"));
e.addSuppressed(new SampleException("E2"));
// [SampleException: E1, SampleException: E2]
System.out.println(Arrays.toString(e.getSuppressed()));
System.out.println(e.getStackTrace().length); // 0
Exception (Throwable cause)
final Exception cause = new SampleException("XYZ");
final Exception e = new SampleException(cause);
System.out.println(e); // SampleException: SampleException: XYZ
System.out.println(e.getMessage()); // SampleException: XYZ
System.out.println(e.getCause()); // SampleException: XYZ
System.out.println(e.getCause().getMessage()); // XYZ
Throwableで宣言されたメソッド
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
「Java API 使用例 : Throwable」をご参照ください。
関連記事
- API 使用例
- Error (エラー)
- Exception (チェック例外)
- RuntimeException (非チェック例外)
- ArithmeticException (算術例外)
- ArrayIndexOutOfBoundsException
- ArrayStoreException
- CancellationException
- ClassCastException (キャスト例外)
- ConcurrentModificationException (並列処理例外)
- DateTimeException (日付・時刻の例外)
- DateTimeParseException (日付・時刻の解析例外)
- IllegalArgumentException
- IllegalStateException
- IndexOutOfBoundsException
- NoSuchElementException
- NullPointerException
- PatternSyntaxException
- StringIndexOutOfBoundsException
- UnsupportedOperationException
- Throwable