質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • PHP

    20910questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • 例外処理

    33questions

    例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

  • 例外

    31questions

    例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

例外"が"投げられた?

解決済

回答 6

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 804

aaaaaaaa

score 469

開発者が予めエラーを想定し、想定したエラーが発生したときに行う処理を例外処理と呼び、
その想定したエラーを例外と呼びます。そして、その例外にphpに予め組み込まれているexceptionクラスとその子クラスのインスタンスを送ることを例外が投げられた、と言います。
例外"が"ということは、エラーが投げられたということでしょうか。
インスタンスを送信しているので、exceptionが投げられたのほうがシックリくるのですが、なぜ例外"が"投げられたというのでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

+4

昔からの、IT系の変な翻訳のまま、というところでしょうか。
実際のコード上で例外を投げる(想定外の処理が発生したので処理を、通常の流れから変える)という実装が、

throw new exception


と、プログラムで記載します(言語によっていろいろ違いますが)ので、
これを、そのまま翻訳すると、

新しい例外を投げる


ってな感じに翻訳できるので、おそらく例外という概念が浸透しはじめた当初の頃、どこかの翻訳がそのようになっていて(プログラミング言語C++あたりにでも書いてあるのか?)そのまま、現在まで使われているのかと。

意味的にも、プログラマさんたちが、「投げる」というところで、通常処理以外に、とんでいっちゃう、みたいなイメージもつかみやすく、だからといって、当時は新しい概念ですので、他に候補もなく、といったところでは。

また、例外処理が、

try{
  throw new exception(e);
}catch(e){
}


と、投げられてた例外を

catch


するというところも、まさに、例外情報を、投げる&つかまえる、みたいな、そんなイメージがぴったりだったり。

てな、私的な雑談でした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

「例外」が「exception」の訳語です。なので、「例外が投げられた」と「exceptionが投げられた」は、この場面では全く同じ意味です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+2

以下、PHP に限らない、手続き型のプログラミング言語一般の話です。

「例外」=「想定内のエラー」というのはちょっと違うかもしれません。
例外処理の要諦は、異常状態の処理と大域脱出にあると考えています。

ある関数やメソッドの中では、何らかのひとまとまりの処理を行うわけですが、その「通常処理(業務ロジックって言ったりもする)」ができないような「異常状態」も存在するわけです。頑健性のあるシステムを構築するには、異常状態への対処もしなければならないわけですが、関数内に異常状態に対する処理と本来の通常処理が混在した形になっていると、通常処理の流れがわかりにくくなり、実装上・仕様上のバグに気づきにくくなるし、業務ロジックの変更についていくの困難になってしまいます。そこで、異常状態を検出したら通常処理の流れから飛び出すように書ける、というのが例外機構を備えたプログラミング言語の利点なわけです。
余談ですが、手続き型のプログラミング言語において、「通常処理の流れから飛び出す」もう一つの仕組みが return 文です。例外機構を持たないプログラミング言語では、異常状態を検出したらその異常状態を表すものを return しちゃう、という書き方をすることで、異常状態の処理と通常処理とをわけることができます。

大域脱出というのは、通常のフローでは (return 文によって) 関数の呼び出し元にしか戻れないところ、呼び出し元の呼び出し元の呼び出し元の ... 呼び出し元まで一気に戻れる、ということです。言い方を変えると、飛んできた例外を捕まえる (捕捉する、catch する) 記述をしてあるところまで一気に戻ることができるわけですが、一気に戻るための記述が例外を投げる (throw) という表現になるわけです。

最初に戻ります。エラーとは何か、異常とは何か、という定義問題にもなってくるわけですが、「通常処理ができない条件」というのをとりあえずここでは「異常」と言ったわけですが、それは必ずしも「エラー」ではないことも多いわけです。「通常処理」のフローをきれいに書くために、「通常処理ができない条件」への対処を分離して書くのが例外処理です。
大域脱出できる、という点に着目し、(全然エラーじゃないし、「異常」でもないようなケースで)フロー制御の一部として利用する方法もあります。
たとえば、forEachPerson() という、管理している person について繰り返しコールバック関数を適用するような関数があって、次のように使えるとします。

forEachPerson(function($person) {
  echo $person['id'] . ':' . $person['name'];
});


このとき、id がある値以上になったら繰り返しを中断したい、というときに例外を使って

try {
  forEachPerson(function($person) {
    if ($person['id'] > 100) {
      throw new Exception('id が 100 超えたんで途中で抜けるよ');
    }
    echo $person['id'] . ':' . $person['name'];
  });    
} catch (Exception $e) {
  // do nothing
}


例外処理は一般的に重いので、速度が要求されるところで気軽に使うのは考えものかもしれませんが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

細かい話ですが…

その想定したエラーを例外処理と呼びます。

想定したエラーに基づき対応するものを例外処理といいます。
「例外処理に遷移した」の方が実状にそってるかも?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

exceptionを投げた、exceptionが投げられた、という人もいます。
「えくせぷしょん」よりも音が短い「れいがい」のほうが好まれるのではないでしょうか。
プログラマはめんどくさがりなので。

例外が出た、とか、例外が起きた、とかの言い方もしますが、throwなので「投げた」が通じやすいです。

ご質問の内容とマッチしないかもしれませんが、「が」を強調なさっているので念の為。
「を」と「が」の使い分けは受動態か否かの問題です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/22 09:08 編集

    横から失礼します。「協調」→「強調」、ですね。

    ※ 元々、回答に誤字がありましたが、今は正しく修正されています。

    キャンセル

  • 2016/04/22 09:33

    ありがとうございます(^^;

    キャンセル

関連した質問

同じタグがついた質問を見る

  • PHP

    20910questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • 例外処理

    33questions

    例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

  • 例外

    31questions

    例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。