Web アプリで予期しないエラー メッセージをすべてキャッチし、一般的なメッセージをエンド ユーザーに表示しようとしています。しかし、現時点では、いくつかの php / codeigniter エラー メッセージがページに表示されています。
コントローラーに次のロジックがあります。
public function logs()
{
try {
$data['logcontents'] = $this->switches_model->get_logs($this->uri->segment(7), $this->uri->segment(4));
$data['main_content']='logs';
$this->load->view('includes/template', $data);
}
catch (Exception $e) {
show_error($e->getMessage());
}
}// end logs
そして、私のモデルは次のようになります。
public function get_logs($dnsName, $switchname)
{
try {
if ( $switch_obj->connect() ) {
//do something
return $data;
}
else {
throw new Exception('Connection');
}//end if
}// end try
catch (Exception $e) {
print 'switches_model get_logs e handler<BR>';
$this->error_handler($e->getMessage());
return false;
}
そして最後に、これは私のモデルの error_handler() メソッドがどのように見えるかです:
private function error_handler($emess)
{
switch ($emess)
{
case 'Connection':
$userfriendlyemess = "Unable to connect to device. Please contact administrator! (1)";
break;
case 'Empty Data Set':
$userfriendlyemess = "Device connected. Unable to get data. Please contact administrator! (3)";
break;
case 'Failure':
$userfriendlyemess = "Oops! Unable to complete command. Please contact administrator! (4)";
break;
//handling unknown errors
default:
$userfriendlyemess = "Oops! Something big just happened. (99)";
log_message('error', $emess); //write to ci logs
break;
}
throw new Exception($userfriendlyemess);
}
このロジックをローカルでテストしましたが、接続障害をシミュレートすると、「デバイスに接続できません。管理者に連絡してください! (1)」というメッセージを示すエラー メッセージが 1 つ表示されます。
しかし、別の Web サーバーでこれと同じロジックを試しているところ、さらに多くのエラー メッセージが表示されます。
PHP エラーが発生しました
重大度: 通知
メッセージ: 未定義のプロパティ: スイッチ::$_password
ファイル名: core/Model.php
行番号: 51 PHP エラーが発生しました
重大度: 通知
メッセージ: 未定義のプロパティ: スイッチ::$_userId
ファイル名: core/Model.php
行番号: 51 switch_model get_logs e handler PHP エラーが発生しました
重大度: 警告
メッセージ: ヘッダー情報を変更できません - ヘッダーは既に送信されています (出力は /myapp/system/core/Exceptions.php:185 で開始)
ファイル名: core/Common.php
行番号: 438 エラーが発生しました
デバイスに接続できません。管理者に連絡してください!(1)
CI からのこれらのメッセージが何を意味するのかも疑問に思っていますが、Google で検索できます。今のところ、これらのメッセージがユーザーに表示されないようにする方法を考えています。私はそれらをログに記録したいだけです。CI の config.php には、 $config['log_threshold'] = 1; があります。
ありがとう。
編集1
エラーが発生する理由がわかりました.2つの変数を適切に宣言していなかったためです。しかし、予期しないエラーが GUI に表示されるのを防ぐために、私が整理するのを手伝ってくれれば、それは大歓迎です!