Throwable
日本語 | 投げられるクラス |
英語 | throwable |
ふりがな | すろーあぶる、すろーわぶる |
フリガナ | スローアブル、スローワブル |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.lang.Throwable。
例外クラスの本当のスーパークラス。
全例外の親に当たるクラス。Throwableクラスのサブクラスであれば例外としての機能を持つと見なされる。throwやcatchに使用できるのもThrowableクラスもしくはそのサブクラスのみである。
また、例外としての基本機能も実装されている。「どのような例外か」を説明する文字列や、「本当の発生源」の例外をコンストラクタで格納することができ、printStackTrace()メソッドによるスタックトレースの出力やgetCause()メソッドによる「本当の発生源」の取得が行える。
とはいえ、Throwableクラスの直近のサブクラスがErrorクラスとExceptionクラスであり、Errorクラスは例外と呼べないことを考えると、実際の「例外のスーパークラス」はExceptionクラスと言える。Throwableクラスは「例外処理が適用できるクラスのスーパークラス」であるだけで、実際の例外処理に使用することはないだろう。
例外クラスの本当のスーパークラス。
全例外の親に当たるクラス。Throwableクラスのサブクラスであれば例外としての機能を持つと見なされる。throwやcatchに使用できるのもThrowableクラスもしくはそのサブクラスのみである。
また、例外としての基本機能も実装されている。「どのような例外か」を説明する文字列や、「本当の発生源」の例外をコンストラクタで格納することができ、printStackTrace()メソッドによるスタックトレースの出力やgetCause()メソッドによる「本当の発生源」の取得が行える。
とはいえ、Throwableクラスの直近のサブクラスがErrorクラスとExceptionクラスであり、Errorクラスは例外と呼べないことを考えると、実際の「例外のスーパークラス」はExceptionクラスと言える。Throwableクラスは「例外処理が適用できるクラスのスーパークラス」であるだけで、実際の例外処理に使用することはないだろう。
参考サイト
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 例外と同じように投げられます。
try
{
// Throwableを投げます。
throw new Throwable();
}
catch( Throwable e )
{
// 投げられたThrowableを拾いました。
e.printStackTrace();
// java.lang.Throwable
// at Sample.main(Sample.java:10)
// このように、普通に例外として使えます。
// 当然ではありますが。
}
// その他の使い方はExceptionの方を参照。
// 実際、Throwableを直に使うことは皆無なので。
// throwやcatchに使用できるのは、Throwableの
// サブクラスのみです。
try
{
// Stringを投げます。
// throw new String();
// コンパイルエラー:
// 型の不一致: String から Throwable には変換できません。
}
// catch( String e ){}
// コンパイルエラー:
// 型の不一致: String から Throwable には変換できません。
finally
{
}
}
}
public class Sample
{
public static void main( String[] args )
{
// 例外と同じように投げられます。
try
{
// Throwableを投げます。
throw new Throwable();
}
catch( Throwable e )
{
// 投げられたThrowableを拾いました。
e.printStackTrace();
// java.lang.Throwable
// at Sample.main(Sample.java:10)
// このように、普通に例外として使えます。
// 当然ではありますが。
}
// その他の使い方はExceptionの方を参照。
// 実際、Throwableを直に使うことは皆無なので。
// throwやcatchに使用できるのは、Throwableの
// サブクラスのみです。
try
{
// Stringを投げます。
// throw new String();
// コンパイルエラー:
// 型の不一致: String から Throwable には変換できません。
}
// catch( String e ){}
// コンパイルエラー:
// 型の不一致: String から Throwable には変換できません。
finally
{
}
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 例外と同じように投げられます。 try { // Throwableを投げます。 throw new Throwable(); } catch( Throwable e ) { // 投げられたThrowableを拾いました。 e.printStackTrace(); // java.lang.Throwable // at Sample.main(Sample.java:10) // このように、普通に例外として使えます。 // 当然ではありますが。 } // その他の使い方はExceptionの方を参照。 // 実際、Throwableを直に使うことは皆無なので。 // throwやcatchに使用できるのは、Throwableの // サブクラスのみです。 try { // Stringを投げます。 // throw new String(); // コンパイルエラー: // 型の不一致: String から Throwable には変換できません。 } // catch( String e ){} // コンパイルエラー: // 型の不一致: String から Throwable には変換できません。 finally { } } }