例外処理
日本語 | 異常事態対処 |
英語 | handling exceptions |
ふりがな | れいがいしょり |
フリガナ | レイガイショリ |
投げられる例外に対処すること。
特定の例外が投げられる可能性がある場合に、その例外を拾い、適切な対処を行うようなプログラムを指す。
一般的には、例外が投げられる可能性がある範囲をtryで囲み、投げられる可能性のある例外をcatchで拾うことでメソッドの外へと出て行くのを止め、何らかの適切な処理を行う事を指す。
広義の意味としては、投げられる可能性がある例外をthrowsで指定することでメソッドの外へと逃がす方法も含む。
例外処理は、プログラム内で必要な「チェック」や「異常への対処」をまとめて行えるため、適切に使用することでプログラムをシンプルにすることができる。
反面、様々な異常に対応するため例外の数が限りなく増えたり、throwsで指定した例外の変更の影響範囲が非常に広くなったりと、プログラムの複雑化やメンテナンス性の低下も招く可能性がある。
「投げられる可能性がある例外」は、値のチェック等によって「絶対に投げられない」ようにすることができる。たとえばNullPointerExceptionはnullチェックを行うことで投げられないようにすることができる。このようにすることで、例外処理を行わないようにすることもできる。
だが、チェック量が増える事によるプログラムの肥大化や可読性・メンテナンス性低下もあり、またthrowsによって指定された例外は必ず処理する必要があるため、例外処理を減らすというわけにも簡単にはいかない。
決まった答がなく、適切な例外処理は論理的な判断と現場のノウハウによってのみ行えるが、比較的大きいプロジェクトにおいてそれが全体に適用できるか……Javaにおいて永遠のテーマのひとつと言えるかもしれない。
特定の例外が投げられる可能性がある場合に、その例外を拾い、適切な対処を行うようなプログラムを指す。
一般的には、例外が投げられる可能性がある範囲をtryで囲み、投げられる可能性のある例外をcatchで拾うことでメソッドの外へと出て行くのを止め、何らかの適切な処理を行う事を指す。
広義の意味としては、投げられる可能性がある例外をthrowsで指定することでメソッドの外へと逃がす方法も含む。
例外処理は、プログラム内で必要な「チェック」や「異常への対処」をまとめて行えるため、適切に使用することでプログラムをシンプルにすることができる。
反面、様々な異常に対応するため例外の数が限りなく増えたり、throwsで指定した例外の変更の影響範囲が非常に広くなったりと、プログラムの複雑化やメンテナンス性の低下も招く可能性がある。
「投げられる可能性がある例外」は、値のチェック等によって「絶対に投げられない」ようにすることができる。たとえばNullPointerExceptionはnullチェックを行うことで投げられないようにすることができる。このようにすることで、例外処理を行わないようにすることもできる。
だが、チェック量が増える事によるプログラムの肥大化や可読性・メンテナンス性低下もあり、またthrowsによって指定された例外は必ず処理する必要があるため、例外処理を減らすというわけにも簡単にはいかない。
決まった答がなく、適切な例外処理は論理的な判断と現場のノウハウによってのみ行えるが、比較的大きいプロジェクトにおいてそれが全体に適用できるか……Javaにおいて永遠のテーマのひとつと言えるかもしれない。
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 最も一般的な例。
try
{
// NullPointerExceptionを投げます。
// (実際にはこんな分かりやすくないですが)
throw new NullPointerException();
}
catch( NullPointerException e )
{
// 投げられたNullPointerExceptionを拾いました。
e.printStackTrace();
// java.lang.NullPointerException
// at Sample.main(Sample.java:11)
}
}
}
public class Sample
{
public static void main( String[] args )
{
// 最も一般的な例。
try
{
// NullPointerExceptionを投げます。
// (実際にはこんな分かりやすくないですが)
throw new NullPointerException();
}
catch( NullPointerException e )
{
// 投げられたNullPointerExceptionを拾いました。
e.printStackTrace();
// java.lang.NullPointerException
// at Sample.main(Sample.java:11)
}
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 最も一般的な例。 try { // NullPointerExceptionを投げます。 // (実際にはこんな分かりやすくないですが) throw new NullPointerException(); } catch( NullPointerException e ) { // 投げられたNullPointerExceptionを拾いました。 e.printStackTrace(); // java.lang.NullPointerException // at Sample.main(Sample.java:11) } } }
「みだし」に含まれているページ
「解説」に含まれているページ
「サンプルプログラムとか」に含まれているページ
- (参照している単語はありません)