検索
  • サインイン
  • サインアップ
パスワードのリセットが成功しました

興味のあるプロジェクトをフォローし、それらに関する最新ニュースをチェックしてください

エラー処理機構の変更

コレクション 105
リーディング 69545
更新時間 2016-09-11

1. Exception と Error という 2 つの例外クラスが追加されました。

PHP7 には、Exception と Error という 2 つの例外クラスが追加されました。どちらのクラスも新しいインターフェイス Throwable を実装します。例外処理コードでは、型ヒントを調整する必要がある場合があります。

2. 一部の致命的エラーと回復可能な致命的エラーは、Error オブジェクトをスローするように変更されました。

一部の致命的エラーと回復可能な致命的エラーは、代わりに Error オブジェクトを報告するようになりました。エラー オブジェクトは Exception から独立しており、通常の try/catch ではキャッチできません。編集者注: エラー処理関数を登録する必要があります。以下の RFC を参照してください。

例外になったこれらの回復可能な致命的なエラーは、エラー ハンドラーを通じてサイレントに無視することはできません。特に、タイプヒントエラーは無視できません。

3. 構文エラーは ParseError オブジェクトをスローします

構文エラーは、Error オブジェクトを継承する ParseError オブジェクトをスローします。 eval() を処理する前に、潜在的にエラーが発生しやすいコードの戻り値または error_get_last() をチェックすることに加えて、ParseError オブジェクトもキャプチャする必要があります。

4. 内部オブジェクトの構築メソッドは、失敗した場合に常に例外をスローします。

内部オブジェクトの構築メソッドは、失敗した場合に常に例外をスローします。以前のコンストラクターの中には、NULL または使用できないオブジェクトを返すものがありました。

5. 一部の E_STRICT エラーのレベルが調整されました。


PHP 7 エラー処理

#PHP 7 では、ほとんどのエラーが報告される方法が変更されています。 PHP 5 の従来のエラー報告メカニズムとは異なり、ほとんどのエラーはエラー例外としてスローされるようになりました。

この種の Error 例外は、通常の例外と同様に try / catch ブロックでキャッチできます。一致する try / catch ブロックがない場合、 例外処理関数 (set_Exception_handler() で登録) が呼び出されて処理されます。 例外ハンドラーが登録されていない場合は、従来の方法で処理され、致命的エラーとして報告されます。

Error クラスは Exception クラスから拡張されていないため、catch (Exception $e) { ... } のようなコードはキャッチできません。 エラーに。 catch (Error $e) { ... } のようなコードを使用するか、例外処理関数 ( set_Exception_handler()) を使用してエラーをキャッチします。

エラー例外階層


1 。エラー

  • 算術エラー


  • アサーションエラー


  • DivisionByZeroError


  • 解析エラー


  • タイプエラー


#2.例外

##...

###############################################例# #
#
<?php
class MathOperations 
{
   protected $n = 10;
   // 求余数运算,除数为 0,抛出异常
   public function doOperation(): string
   {
      try {
         $value = $this->n % 0;
         return $value;
      } catch (DivisionByZeroError $e) {
         return $e->getMessage();
      }
   }
}
$mathOperationsObj = new MathOperations();
print($mathOperationsObj->doOperation());
?>
上記のプログラムの実行出力は次のとおりです:
Modulo by zero
1458887252-2773-exception-hiearchy.jpg
#PHP 7 例外
PHP 7 例外は、下位互換性と古いassert() 関数の拡張のために使用されます。これにより、運用環境でゼロコストのアサーションが可能になり、カスタム例外やエラーをスローする機能が提供されます。

API の古いバージョンは、互換性の目的で引き続き維持されます。assert() は、最初のパラメータを、評価される文字列やブール値だけでなく、式にすることができる言語構造になりました。テストされること。 assert() 設定


設定項目

デフォルト値オプション値

#zend.assertions

1

-1 - コードを生成しません (実稼働環境)#

パラメータ

アサーション

アサーション。 PHP 5 では、実行用の文字列またはテスト用のブール値。 PHP 7 では、これは任意の値を返す式にすることができ、その結果はアサーションが成功したかどうかを示すために使用されます。

description

アサーションが失敗した場合、オプションの説明が失敗メッセージに含まれます。

Exception

PHP 7 では、2 番目のパラメーターは文字列の代わりに Throwable オブジェクトにすることができます。このオブジェクトは、アサーションが失敗し、assert.Exception が有効な場合にスローされます。

zend.assertions を 0 に設定します:

<?php
ini_set('zend.assertions', 0);
assert(true == false);
echo 'Hi!';
?>

上記のプログラムの実行出力結果は次のとおりです:

Hi!

set zend.assertions を 1 に、assert.Exception を 1 に設定します。

Example

<?php
ini_set('zend.assertions', 1);
ini_set('assert.exception', 1);
assert(true == false);
echo 'Hi!';
?>

上記のプログラムの実行出力結果は次のとおりです。 :

Fatal error: Uncaught AssertionError: assert(true == false) in -:2Stack trace:#0 -(2): assert(false, 'assert(true == ...')#1 {main}
  thrown in - on line 2
ホットAIツール
Undress AI Tool
Undress AI Tool

脱衣画像を無料で

AI Clothes Remover
AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undresser.AI Undress
Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

Stock Market GPT
Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

人気のツール
メモ帳++7.3.1
メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版
SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6
ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版
SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

1 - コードの生成と実行 (開発mode)

0 - コードを生成しますが、実行中はスキップします


#assert.Exception
0
  • 1 - 次の場合にスローされます。アサーションが失敗するか、例外オブジェクトがスローされるか、例外が提供されない場合は AssertionError オブジェクト インスタンスがスローされます。

  • #0 - Throwable を使用または生成します。オブジェクトをスローするのではなく、オブジェクトに基づいて警告を生成するだけです (PHP 5 と互換性があります)