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
- セッションスコープ
- テキストファイル
- バイト入力ストリーム
- バイト出力ストリーム
- バイナリーファイル
- ブロックします
- リクエストスコープ
- リフレクション
- 主キー
- 例外
- 例外処理
- 入力フォーム
- 制約
- 変数宣言
- 契約による設計
- 投げる
- 拾う
- 文字入力ストリーム
- 標準入出力
- 浅いコピー
- 深いコピー
- 直列化




