throw
日本語 | 投げる |
英語 | throw |
ふりがな | すろう |
フリガナ | スロウ |
例外を「投げる」ための予約語。ステートメントの一種。
例外クラスのインスタンスへの参照を受け取り、その例外を発生させることで、その例外が「投げられる」。
通常、例外は「投げられる」ものだが、プログラム上「何らかの問題が発生した」場合に、例外を明示的に投げるために使用する。
Java言語仕様上はreturnの強化版と言える。
例外クラスのインスタンスへの参照を受け取り、その例外を発生させることで、その例外が「投げられる」。
通常、例外は「投げられる」ものだが、プログラム上「何らかの問題が発生した」場合に、例外を明示的に投げるために使用する。
Java言語仕様上はreturnの強化版と言える。
// Sample.java
public class Sample
{
public static void main( String[] args )
{
try
{
// NullPointerExceptionを投げてみます。
throw new NullPointerException();
}
catch( NullPointerException e )
{
// それを受け取ります。
e.printStackTrace();
// java.lang.NullPointerException
// at Sample.main(Sample.java:10)
}
try
{
// 自分で作った例外を投げてみます。
throw new SampleException();
}
catch( SampleException e )
{
// それを受け取ります。
e.printStackTrace();
// SampleException
// at Sample.main(Sample.java:23)
}
try
{
// メソッドから投げてみます。
Sample sample = new Sample();
sample.nullPointerExceptionThrower();
}
catch( NullPointerException e )
{
// それを受け取ります。
e.printStackTrace();
// java.lang.NullPointerException
// at Sample.nullPointerExceptionThrower(Sample.java:73)
// at Sample.main(Sample.java:36)
}
// 例外ではないクラスは投げられません。
// throw new Integer( 100 );
// コンパイルエラー:
// 型の不一致: Integer から Throwable には変換できません。
// RuntimeExceptionクラスのサブクラスではない
// 例外は、catchしないとコンパイルエラーになります。
// throw new SampleException();
// コンパイルエラー:
// 処理されない例外の型 SampleException
// RuntimeExceptionのサブクラスの例外は、
// catchしくてもコンパイルエラーにはなりません。
// NullPointerExceptionなんて受けきれないので
// 当然ですが……。
throw new NullPointerException();
// java.lang.NullPointerException
// at Sample.main(Sample.java:61
// Exception in thread "main"
}
/**
* NullPointerExceptionを投げるメソッド。
*/
private void nullPointerExceptionThrower()
{
// NullPointerExceptionを投げます。
throw new NullPointerException();
// throwは、その後の処理をすっ飛ばすため、
// returnのようにもみなされます。
// そのため、throwによって「明らかに行われない
// 処理」がある場合にはコンパイルエラーになります。
// System.out.println( "ここには来ねぇ。" );
// コンパイルエラー:
// 到達不能コード
}
}
/**
* 自作の例外クラス。
* Exceptionのサブクラスとすることで、自動的に
* 例外とみなされます。
*/
class SampleException extends Exception
{
}
public class Sample
{
public static void main( String[] args )
{
try
{
// NullPointerExceptionを投げてみます。
throw new NullPointerException();
}
catch( NullPointerException e )
{
// それを受け取ります。
e.printStackTrace();
// java.lang.NullPointerException
// at Sample.main(Sample.java:10)
}
try
{
// 自分で作った例外を投げてみます。
throw new SampleException();
}
catch( SampleException e )
{
// それを受け取ります。
e.printStackTrace();
// SampleException
// at Sample.main(Sample.java:23)
}
try
{
// メソッドから投げてみます。
Sample sample = new Sample();
sample.nullPointerExceptionThrower();
}
catch( NullPointerException e )
{
// それを受け取ります。
e.printStackTrace();
// java.lang.NullPointerException
// at Sample.nullPointerExceptionThrower(Sample.java:73)
// at Sample.main(Sample.java:36)
}
// 例外ではないクラスは投げられません。
// throw new Integer( 100 );
// コンパイルエラー:
// 型の不一致: Integer から Throwable には変換できません。
// RuntimeExceptionクラスのサブクラスではない
// 例外は、catchしないとコンパイルエラーになります。
// throw new SampleException();
// コンパイルエラー:
// 処理されない例外の型 SampleException
// RuntimeExceptionのサブクラスの例外は、
// catchしくてもコンパイルエラーにはなりません。
// NullPointerExceptionなんて受けきれないので
// 当然ですが……。
throw new NullPointerException();
// java.lang.NullPointerException
// at Sample.main(Sample.java:61
// Exception in thread "main"
}
/**
* NullPointerExceptionを投げるメソッド。
*/
private void nullPointerExceptionThrower()
{
// NullPointerExceptionを投げます。
throw new NullPointerException();
// throwは、その後の処理をすっ飛ばすため、
// returnのようにもみなされます。
// そのため、throwによって「明らかに行われない
// 処理」がある場合にはコンパイルエラーになります。
// System.out.println( "ここには来ねぇ。" );
// コンパイルエラー:
// 到達不能コード
}
}
/**
* 自作の例外クラス。
* Exceptionのサブクラスとすることで、自動的に
* 例外とみなされます。
*/
class SampleException extends Exception
{
}
// Sample.java public class Sample { public static void main( String[] args ) { try { // NullPointerExceptionを投げてみます。 throw new NullPointerException(); } catch( NullPointerException e ) { // それを受け取ります。 e.printStackTrace(); // java.lang.NullPointerException // at Sample.main(Sample.java:10) } try { // 自分で作った例外を投げてみます。 throw new SampleException(); } catch( SampleException e ) { // それを受け取ります。 e.printStackTrace(); // SampleException // at Sample.main(Sample.java:23) } try { // メソッドから投げてみます。 Sample sample = new Sample(); sample.nullPointerExceptionThrower(); } catch( NullPointerException e ) { // それを受け取ります。 e.printStackTrace(); // java.lang.NullPointerException // at Sample.nullPointerExceptionThrower(Sample.java:73) // at Sample.main(Sample.java:36) } // 例外ではないクラスは投げられません。 // throw new Integer( 100 ); // コンパイルエラー: // 型の不一致: Integer から Throwable には変換できません。 // RuntimeExceptionクラスのサブクラスではない // 例外は、catchしないとコンパイルエラーになります。 // throw new SampleException(); // コンパイルエラー: // 処理されない例外の型 SampleException // RuntimeExceptionのサブクラスの例外は、 // catchしくてもコンパイルエラーにはなりません。 // NullPointerExceptionなんて受けきれないので // 当然ですが……。 throw new NullPointerException(); // java.lang.NullPointerException // at Sample.main(Sample.java:61 // Exception in thread "main" } /** * NullPointerExceptionを投げるメソッド。 */ private void nullPointerExceptionThrower() { // NullPointerExceptionを投げます。 throw new NullPointerException(); // throwは、その後の処理をすっ飛ばすため、 // returnのようにもみなされます。 // そのため、throwによって「明らかに行われない // 処理」がある場合にはコンパイルエラーになります。 // System.out.println( "ここには来ねぇ。" ); // コンパイルエラー: // 到達不能コード } } /** * 自作の例外クラス。 * Exceptionのサブクラスとすることで、自動的に * 例外とみなされます。 */ class SampleException extends Exception { }
「解説」に含まれているページ
- ,
- ArithmeticException
- ArrayIndexOutOfBoundsException
- ArrayStoreException
- Caused by
- ClassCastException
- Exception
- IllegalArgumentException
- IndexOutOfBoundsException
- InvocationTargetException
- NoSuchElementException
- NullPointerException
- NumberFormatException
- RuntimeException
- ServletException
- StringIndexOutOfBoundsException
- Throwable
- throws
- シグネチャー
- ステートメント
- 予約語
- 例外
- 例外処理
- 投げられる
- 投げる
- 拾う
「サンプルプログラムとか」に含まれているページ
- ,
- <jsp:useBean>
- BufferedInputStream
- BufferedOutputStream
- BufferedReader
- catch
- Caused by
- classesディレクトリ
- clone
- Cloneable
- CloneNotSupportedException
- close
- Cookie
- DataInputStream
- DataOutputStream
- doGet
- doPost
- EOF
- EOFException
- Exception
- FileInputStream
- FileReader
- FilterInputStream
- FilterOutputStream
- FilterReader
- FilterWriter
- finally
- HttpServlet
- HttpServletRequest
- HttpServletResponse
- HttpSession
- InputStream
- InputStreamReader
- InvocationTargetException
- JavaBeans
- JSP暗黙オブジェクト「request」
- JSP暗黙オブジェクト「session」
- LineNumberInputStream
- LineNumberReader
- NOT NULL制約
- ObjectInputStream
- ObjectOutputStream
- OutputStream
- OutputStreamWriter
- printStackTrace
- PrintStream
- PushbackInputStream
- PushbackReader
- Reader
- RequestDispatcher
- RuntimeException
- SequenceInputStream
- Serializable
- ServletConfig
- ServletContext
- ServletException
- SQLException
- StringBufferInputStream
- throw
- Throwable
- throws
- transient
- try
- web.xml
- while
- whileステートメント
- Writer
- カスタムタグライブラリ
- キャッシュ
- キャッチ
- クッキー
- クロスサイトスクリプティング
- サニタイジング
- サーブレット
- スタックトレース
- セッション
- セッションID
- セッションスコープ
- テキストファイル
- バイト入力ストリーム
- バイト出力ストリーム
- バイナリーファイル
- ブロックします
- リクエストスコープ
- リフレクション
- 主キー
- 例外
- 例外処理
- 入力フォーム
- 制約
- 変数宣言
- 契約による設計
- 投げる
- 拾う
- 文字入力ストリーム
- 標準入出力
- 浅いコピー
- 深いコピー
- 直列化