例外
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/04/18 14:44 UTC 版)
数学と例外
数学の四則演算の場合、任意の二つの数の間でどの演算もできるし、どの場合も答えは一つ求められる。しかし、0で除算することだけはこの例外である。この場合、例外は明らかにこの一つだけである。
数学においては、命題(全称命題)にひとつの例外をあげることができれば、その命題は正しくないと判断する。その場合は例外とは言わず、反例という。
その数があまりにも少なく、またそれを取り除いた範囲でのその命題の正しさが証明できるのであれば、例外をあらかじめ明記する形で命題を記述する方法もある。
コンピュータと例外
プログラミングでは、プログラムがある処理を実行している途中で生じ得る、設計から逸脱した状態を「例外」という。プログラムの利用者が対処するエラーとは異なり、例外は開発者が対処する。例外発生時にはプログラムにより実現されるシステムの内部状態に矛盾が生じており、適切に対処されなければ以後の処理継続が不可能になるか、処理が継続できても破壊的な処理が進行してしまう可能性が高い。設計上無視する場合は問題にならないが、例外の見落としは重大なシステム障害に繋がる。システムが正常な内部状態を保つためには、開発者により全ての例外への対処が設計されていなければならない。
例えば次のような状態である。
- 0で除算しなければならない状況になる
- 存在しないファイルを読み書きしようとする
- データベースに重複したキーのレコードを挿入しようとする
例外が発生した場合に、現在の処理を中断(中止)して別の処理や回避処理を行うことを例外処理という。
プログラミング言語としては、C++、C#、Visual Basic.NET、Java、Pythonなどが例外機構を備えている。Javaでは例外が生じた場合の処理のしかたをあらかじめ記述することで、処理が全体として破綻しないようにすることができる。(例外が起こりうる処理をtry
ブロックに記述し、続くcatch
ブロックに、想定する例外とそれらに対する処理を記述しておくことができる)
Windowsでのブルースクリーンが表示される「例外0E」なども例外にあたる。
また、CPUが0での除算などの実行できない処理に遭遇することについても言う。UNIX系 OS で「ハードウェア例外」が発生すると、カーネルはプロセスに対してSIGFPEやSIGSEGVなどのシグナルを生成する。
自然言語と例外
自然言語の文法にも例外があり、自然言語の語法にも例外がある。
不規則活用
自然言語のいくつかの語彙に対して(その自然言語における)規則的な活用を見出すことができる。しかし一般的にはすべての語彙に適用できる規則はなく、その規則に当てはまらない例外が存在する。
例えば(現代)英語の不規則動詞はおよそ 200 語とされ[5]、その他の動詞はすべて規則的であると考えられている[注 2]。
英語における動詞の規則活用は、原形に対し末尾に "-ed" を付加して過去形および過去分詞形を表すものである。規則動詞として例えば以下のものが挙げられる:
原形 | 過去形 | 過去分詞形 |
---|---|---|
open | opened | opened |
try | tried | tried |
share | shared | shared |
submit | submitted | submitted |
beg | begged | begged |
これらの規則動詞と異なる活用をする動詞を不規則動詞という。不規則動詞の例として以下が挙げられる:
原形 | 過去形 | 過去分詞形 |
---|---|---|
catch | caught | caught |
write | wrote | written |
read | read | read |
go | went | gone |
see | saw | seen |
近現代の英語における不規則活用の多くは、それ以前の古い時代の活用が残ったものと考えられている。
- ^ この法則自体にも適用できる、と付け足す例もある、詳しくは下記参照)。
- ^ なお現代英語として一般的に通用する動詞の数は、動詞の数え方に依存しているため具体的に定められないが、例えばオックスフォード英語辞典に収録されている語彙としてはおよそ25000 語[6]である。
- >> 「例外」を含む用語の索引
- 例外のページへのリンク