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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

3回答

1268閲覧

管理パネルにおける例外処理の実装方法

amakusa

総合スコア176

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2015/08/03 10:53

お疲れ様です。
現在僕はお悩み掲示板のようなサービスの管理パネルを作っているのですが、
例外処理を実装しなきゃいけないよというアドバイスをいただきました。

しかし、例外処理が”具体的にどこに必要なのか”がまったくわかりません。
何かの処理に対して行うものであるという認識はあるのですが、どういう処理に対して例外処理(try~catch文)を入れればよいのでしょうか。

調べたりしてもよくわかりませんでしたのでどなたかご助言をお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

運用上の例外処理ことかもしれません。

管理者の権限で強引にデータを変更する行為を例外処理と言ったりします。

例えば質問サイトであれば、通常投稿の削除は投稿者本人が望んでも、回答者がいるので削除はできない運用になっていたとします。ところが投稿内容に個人情報などの不適切な表現などがあり、削除するのが望ましいと判断された場合、DBを直接変更するのではなく、管理者画面で指定した投稿の非表示を指示できるなどの機能です。

たぶんこの意味でつかわれたのではないとおもいますが、一応のため。

投稿2015/08/03 13:46

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

例外処理が”具体的にどこに必要なのか”

エラーが発生する可能性がある処理に必要です。

一般的には、異なるシステムが接してデータを受け渡す、
広い意味でのインターフェイスのような場所で使います。

結論から言うと、IO、DBまわりなどに必要なことが多いです。

例外処理が必要なのは、入出力やDBアクセスの異常で、
データ(ベース)全体、アプリ全体が異常にならないためです。

PHPから見て、UI層との入出力とDB層との入出力、それぞれに必要です。
入出力をチェックするのは、たとえると出入り口で手荷物検査をするのと同じです。

ロジックの処理はPGが自分で書くから、そもそもエラーが出ないようにします。

しかし、入力部分はユーザが操作するのでエラーになる場合があるし、
DBやAPIへのリクエストなども先方の都合でエラーになる場合があります。

だから例外処理を含むエラー処理を実装する必要があります。

ご質問の管理パネルは典型的なインターフェイスだと言えます。
入力が多いでしょうし、設定はDBに書き込むでしょう。

具体的にはフォームの入力やDBのトランザクション、
ファイルのアップロードとダウンロードなど、
そういうデータの出入り口でエラー処理します。

投稿2015/08/03 12:33

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

例外処理ですが、有名どころですと0による除算があります。まあ今回は多分関係ないですが…。

おそらくそのサービスですとDBを使用しているかと思いますが、最低限DBへの登録が失敗した時なんかは例外処理としてぶっ飛ばす必要があるかと思います。

ただPHPはJAVAのように勝手にthrowしてくれないので、throw new exceptionを使って自力でエラーをキャッチしてthrowする必要があります。(古い知識なので今はどうなのかわかりませんが…)

投稿2015/08/03 11:10

yu-ri

総合スコア634

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amakusa

2015/08/03 11:20

丁寧にありがとうございます! 僕のサービスの管理パネルではDBに入っているものの例えば表示・非表示の切り替えをrequestで変更したり、getで表示したりしています。 なのでそこらへんに対して行うとよいのですかね?
yu-ri

2015/08/03 11:23

cakePHPとのことなので、おそらくDBへの登録はsaveで行っているかと思いますが、 try { if (save(ほにゃらら)) { // 成功した時の処理 } else { throw new Exception(e); } } catch(e) { // エラー処理 } みたいな感じですかね…。
amakusa

2015/08/03 11:56

成功したときの処理というものを書いていない場合にはどうしたらいいんでしょうか? 空白にしておいていいですかね? あと http://book.cakephp.org/2.0/ja/development/exceptions.html これを見てふと思ったのですが、cakephpだとtry catch文は使わずにifで済ませていいのですかね? 質問が多くてすみません。
yu-ri

2015/08/03 13:05

LLman様が例外処理について詳しく解説してくださっているので、そちらを参考になさるとよいかと思います(逃 失敗した時の処理だけ欲しければ、 if (!save(ほにゃらら)) { // 失敗時の処理 } とすればよいかと思います。 ちなみにcakeに限らず、phpは例外を自答的に捕捉してくれません。 http://php.net/manual/ja/language.exceptions.php どうみても自力で投げてます…。 というわけで結局if文が必要になるわけですね(汗
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問