try / catchの繰り返しを回避するためにいくつかのPHPコードをカプセル化することは可能ですか?

ロドリゴグアリエント

このPHPコードスニペットを参照してください。

try {
    /* do something */
} catch (Exception $e) {
    echo $e->getMessage();
}

try {
    /* do something else */
} catch (Exception $e) {
    echo $e->getMessage();
}

try {
    /* do something other */
} catch (Exception $e) {
    echo $e->getMessage();
}

望ましいシナリオ:

function run($code) {
    try {
        << execute $code >>;
    } catch (Exception $e) {
        echo $e->getMessage();
    }
}

run({ /* do something */ });
run({ /* do something else */ });
run({ /* do something other */ });

PHPでより多くの名前付き関数を作成せずに、このようなものを体系化することは可能ですか?

Cid

匿名関数を使用できます:

<?php
function run($code) {
    try {
        $code();
    } catch (Exception $e) {
        echo $e->getMessage() . PHP_EOL;
    }
}

// Simple anonymous function
run(function ()
{
    echo "Hello" . PHP_EOL;
    throw new Exception("1 throws");
});

// Anonymous function stored in a variable
$somePieceOfCode = function ()
{
    echo "Hello 2" . PHP_EOL;
    throw new Exception("2 throws");
};

run($somePieceOfCode);

// Use external variables in the anonymous function
$message = "Hello";
$number = 3;

run(function () use ($message, $number)
{
    echo "$message $number" . PHP_EOL;
    throw new Exception("3 throws");
});

// Store and execute your anonymous functions in an array
$functionArray = [
    function ()
    {
        echo "Array 1" . PHP_EOL;
        throw new Exception("Array 1 throws");
    },
    function ()
    {
        echo "Array 2" . PHP_EOL;
        throw new Exception("Array 2 throws");
    },
    function ()
    {
        echo "Array 3" . PHP_EOL;
        throw new Exception("Array 3 throws");
    }
];

foreach ($functionArray as $func)
{
    run($func);
}

この出力:

Hello
1 throws
Hello 2
2 throws
Hello 3
3 throws
Array 1
Array 1 throws
Array 2
Array 2 throws
Array 3
Array 3 throws

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コードの例外をチェックしたり、try-catchを使用したりすることは、Javaのより良い方法ですか?

分類Dev

Java:try / catchを短くすることは可能ですか?

分類Dev

try catch再試行メカニズムを使用してforループのより短く効率的なコードを作成するにはどうすればよいですか?

分類Dev

try-catch-rethrowを使用したコードは、try-catchを使用しないコードと同等ですか?

分類Dev

このtry-catchとifロジックを単純化することは可能ですか?

分類Dev

try..catchメカニズムを実装するためのより良い方法はありますか?

分類Dev

私のクラスでこのメソッドを修正しようとすると、おそらくtry-catchだと思いますが、目標は、ユーザーが1〜9しか入力できないようにすることです。

分類Dev

コントローラーのすべてのメソッドで一般的なtry / catchを使用することをお勧めしますか、それともより良い方法がありますか?

分類Dev

コントローラーのすべてのメソッドで一般的なtry / catchを使用することをお勧めしますか、それともより良い方法がありますか?

分類Dev

forループの場合にtry / catchブロックを使用する正しい方法は何ですか?

分類Dev

onSnapshotを使用するときに、ネストされたtry catchの使用を回避するにはどうすればよいですか?

分類Dev

IntelliJで(おそらく)冗長なtry ... catchブロックを見つけることは可能ですか?

分類Dev

コードは機能しますが、promise内にtry / catchブロックを含めるのがベストプラクティスですか?

分類Dev

例外処理コンポーネント(try、catch)を別のクラスで作成/ラップすることは可能ですか?

分類Dev

MatLabの「catch」は「try」よりも高いレベルにすることができますか?

分類Dev

この場合、try-catchブロックを不思議にエスケープする例外の最も可能性の高い原因は何ですか?

分類Dev

この場合、try-catchブロックを不思議にエスケープする例外の最も可能性の高い原因は何ですか?

分類Dev

この場合、try-catchブロックを不思議にエスケープする例外の最も可能性の高い原因は何ですか?

分類Dev

.NETでは、イベントハンドラー内でtry catchを適用することは可能ですか?

分類Dev

Try / Catchブロックが新しい変数スコープを作成するのはなぜですか?

分類Dev

jsonが機能しないことを確認するためのtry / catch

分類Dev

例外をスローするメソッドが呼び出されているときに、try catchブロックでダミーの戻り値を回避するにはどうすればよいですか?

分類Dev

ランタイムエラーを防ぎ、try / catchの残りのコードの実行を停止するにはどうすればよいですか?

分類Dev

Java 5のリソースでtryを使用することは可能ですか?

分類Dev

try catchを使用すると、Javaは繰り返し印刷します

分類Dev

Javaでは、try catchブロックから複数の値を返すことは可能ですか?

分類Dev

C#リソースを解放するためにブール値なしでTry Catch Finalを実行するにはどうすればよいですか?

分類Dev

RxJs:subscribe()にtry / catchを使用するのは正しいですか?

分類Dev

Image Acquisition Toolboxがフレームをドロップするときに、Matlabでtry / catchが機能しないのはなぜですか?

Related 関連記事

  1. 1

    コードの例外をチェックしたり、try-catchを使用したりすることは、Javaのより良い方法ですか?

  2. 2

    Java:try / catchを短くすることは可能ですか?

  3. 3

    try catch再試行メカニズムを使用してforループのより短く効率的なコードを作成するにはどうすればよいですか?

  4. 4

    try-catch-rethrowを使用したコードは、try-catchを使用しないコードと同等ですか?

  5. 5

    このtry-catchとifロジックを単純化することは可能ですか?

  6. 6

    try..catchメカニズムを実装するためのより良い方法はありますか?

  7. 7

    私のクラスでこのメソッドを修正しようとすると、おそらくtry-catchだと思いますが、目標は、ユーザーが1〜9しか入力できないようにすることです。

  8. 8

    コントローラーのすべてのメソッドで一般的なtry / catchを使用することをお勧めしますか、それともより良い方法がありますか?

  9. 9

    コントローラーのすべてのメソッドで一般的なtry / catchを使用することをお勧めしますか、それともより良い方法がありますか?

  10. 10

    forループの場合にtry / catchブロックを使用する正しい方法は何ですか?

  11. 11

    onSnapshotを使用するときに、ネストされたtry catchの使用を回避するにはどうすればよいですか?

  12. 12

    IntelliJで(おそらく)冗長なtry ... catchブロックを見つけることは可能ですか?

  13. 13

    コードは機能しますが、promise内にtry / catchブロックを含めるのがベストプラクティスですか?

  14. 14

    例外処理コンポーネント(try、catch)を別のクラスで作成/ラップすることは可能ですか?

  15. 15

    MatLabの「catch」は「try」よりも高いレベルにすることができますか?

  16. 16

    この場合、try-catchブロックを不思議にエスケープする例外の最も可能性の高い原因は何ですか?

  17. 17

    この場合、try-catchブロックを不思議にエスケープする例外の最も可能性の高い原因は何ですか?

  18. 18

    この場合、try-catchブロックを不思議にエスケープする例外の最も可能性の高い原因は何ですか?

  19. 19

    .NETでは、イベントハンドラー内でtry catchを適用することは可能ですか?

  20. 20

    Try / Catchブロックが新しい変数スコープを作成するのはなぜですか?

  21. 21

    jsonが機能しないことを確認するためのtry / catch

  22. 22

    例外をスローするメソッドが呼び出されているときに、try catchブロックでダミーの戻り値を回避するにはどうすればよいですか?

  23. 23

    ランタイムエラーを防ぎ、try / catchの残りのコードの実行を停止するにはどうすればよいですか?

  24. 24

    Java 5のリソースでtryを使用することは可能ですか?

  25. 25

    try catchを使用すると、Javaは繰り返し印刷します

  26. 26

    Javaでは、try catchブロックから複数の値を返すことは可能ですか?

  27. 27

    C#リソースを解放するためにブール値なしでTry Catch Finalを実行するにはどうすればよいですか?

  28. 28

    RxJs:subscribe()にtry / catchを使用するのは正しいですか?

  29. 29

    Image Acquisition Toolboxがフレームをドロップするときに、Matlabでtry / catchが機能しないのはなぜですか?

ホットタグ

アーカイブ