8

この問題を(アプリの外部で生成するために)分離しようとしましたが、できません。

try {
    $has_cache = Cache::has($cache_key);
}
catch (DecryptException $e) {
    echo "No biggie";
    exit;
}

私も試してみましたcatch (Exception $e)が、同じことが起こります。

このコードを使用すると、2行目にDecryptExceptionが発生します。これはどのように発生する可能性がありますか、それはtryブロックにありますか?

私が言ったように、私はクリーンなプロジェクトで同じことをしようとしましたが、そこで例外が発生したので、どこで何かを台無しにしたのか尋ねています。

4

2 に答える 2

25

アプリケーションが名前空間化されている場合は、使用する必要があります

catch(\Exception $e);
// or preferably
catch(\RuntimeException $e);

同様に、DecryptExceptionあなたがキャッチしようとしているのは名前空間にIlluminate\Encryptionあると思うので、必要になるでしょう

catch(\Illuminate\Encryption\DecryptException)
// or use "use" somewhere before the try/catch
use \Illuminate\Encryption\DecryptException

Laravel 4 はまだアルファ版またはプレベータであるため (どうやら彼ら自身はよくわかっていないようです)、決して安定しておらず、おそらく本番用の最良の選択ではないことに注意してください。

于 2013-01-14T13:58:54.160 に答える
4

laravel 5.1の場合、次のように書く必要があります(通常、他の use ステートメントを含むファイルの先頭に):

use Illuminate\Contracts\Encryption\DecryptException;

catch ステートメントの前:

try {
    $data = \Crypt::decrypt($key);
} catch (DecryptException $e) {
    echo 'caught exception';
    exit();
}

参照: https://laravel.com/docs/5.1/encryption - 「値の復号化」の下

他の人に役立つかもしれません。

于 2016-02-10T05:57:20.440 に答える