
こんにちは。
以下の様なコードを書いています。
本来処理するロジックの前に色々なチェックをして全部OKなら目的の処理をする、
と言うコードのつもりなのですが、例外を複数発生させスタックするようなこの書き方は、
良い書き方ですか?「良い」と言うのは、バグの発生を抑えつつ、拡張性、保守性に優れ、
他人にも読みやすいという意味です。
class Foo
{
private $exception;
public function __construct()
{
try{
$this->__init_check();
if($this->exception){
throw $this->exception;
}
}catch(Exception $e){
die(implode("<br />\n", $this->__exceptionToArray($e)));
}
目的の処理・・・
}
private function __stackException($message, Exception $previous = null) {
return new Exception($message, 0, $previous);
}
private function __exceptionToArray(Exception $e) {
do {
$errors[] = $e->getMessage();
} while ($e = $e->getPrevious());
return array_reverse($errors);
}
private function __init_check()
{
if(is_writable('/foo') === false){
$this->exception = $this->__stackException( 'xxxに書き込み権限がない', $this->exception);
}
if(あのチェック){
$this->exception = $this->__stackException('あのチェックおかしい', $this->exception);
}
if(このチェック){
$this->exception = $this->__stackException('このチェックおかしい', $this->exception);
}
などなど。。。
}
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
開発中のデバッグモードとしては有効だと思います
実際の運用にはいったらそれだけ例外処理が発生する可能性があるのか?
という課題はあるでしょうね
冒頭でエラー対処をする場合、プログラムが後ろに流れずにexitする想定ですよね?
どちらかといえば、例外処理はプログラム内に組み込んでエラー時は
該当部をスルーする(もしくはエラーを表示して次に流す)仕様が妥当じゃないですかねぇ?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECTの値を保持する
-
\\x00 でエラー
-
「@$変数」の「@の意味は?」
-
PHP mb_send_mail メール送信 5...
-
pg_queryのエラー
-
フォントの色を変えるには?
-
IIS/PHPのサイトでたまにCGIエ...
-
PHPページの中に「結構」という...
-
PHPでSMTPを使ってメール送信で...
-
PHPのif文でその処理を途中で抜...
-
データ送信をボタンを押さずに...
-
ファイルの更新日時でのソート
-
FTPコマンドでディレクトリごと...
-
【file_exists】ファイルが存在...
-
日付と年月日を選択するコード...
-
FORMで送信ボタンと戻るボタン...
-
CFileDialogの最初のディレクト...
-
インクルードした部分が表示さ...
-
makefile でファイルをコピーす...
-
php,mysqlにて画像パス保存/表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
PHPでfatal errorが出ても無視...
-
PHP8を使うと、大量のWarningが...
-
PHPで、エラーがない場合のみ画...
-
トランザクションが原因?DBに...
-
phpでお問い合わせフォームを作...
-
PHPで特定のURLにジャンプす...
-
try~catch構文は、どういうメ...
-
ある条件に当てはまったときに...
-
PHPでネットワークドライブのop...
-
SELECTの値を保持する
-
PHP、unpack関数でのエラー
-
functionに括弧を使用するとエラー
-
iframeからのアクセスか、ブラ...
-
phpの質問です
-
外部のHTMLに書かれた文字を取...
-
E_NOTICEでも処理を止められま...
-
日本語をGETで渡す場合UR...
-
エラーが出ない
-
「@$変数」の「@の意味は?」
おすすめ情報