0

使用しているフレームワークに try catch があります。catch がトリガーされると、エラー レポート ページが表示されます。このレポート ページの 1 つは、時間がデータベースから取得されたメニューを表示することです。

私が思ったのは、データベースに接続できる場合に備えて、キャッチに別のトライキャッチを入れることです。このようなものです

try
{
    code that would throw an excpetion
}
catch(Exception $e)
{
    try
    {
        connect to database
        run query
        log error in database
        output screen using database data
    }
    catch(Exception $e)
    {
        output screen using static html
    }
}

このようにして、例外がデータベース接続エラーであった場合、データベース データから生成された動的な HTML 出力ではなく、静的な HTML 出力が使用されます。

ただし、データベース エラー (必要なテーブルの削除) が発生すると、静的 html が機能しません

try catch が catch または weather で機能する可能性があるかどうか疑問に思っていますが、それはフレームワークです (私は magento を使用しています)。フレームワークが私を止めている

4

1 に答える 1

1

はい、try/catch ブロックを catch ブロックに入れることは可能です。

ただし、あなたの説明から、より「インテリジェントな」例外キャッチが必要なようです。次のようなことができます。

try {
    // some operations including something with a database
}
catch (DatabaseException $e) {
    // the exception thrown by the code above was a DatabaseException
    // output some error message without using the database
}
catch (Exception $e) {
    // the exception thrown by the code above could have been any type of exception EXCEPT a DatabaseException
    // so you can still try to use the database to compose the error message
}

例外をスローできるものはすべて、catch ブロックから実行されたときにこれらの例外もスローできることに注意してください。たとえば、try ブロックがデータベース コードに到達するに例外をスローした場合でも、データベース以外の元の例外を処理するときにデータベース例外が発生する可能性があります。

于 2013-08-07T23:50:49.667 に答える