WebAPI(OWIN) Pencatatan Pengecualian Global dengan CreateErrorResponse

Apakah ada cara untuk menangkap pengecualian yang ditangani ketika CreateErrorResponse() digunakan untuk mengembalikan respons Kesalahan dengan metode API? Saat ini saya telah mendaftarkan logger pengecualian global sederhana untuk pengecualian apa pun, namun untuk beberapa respons api termasuk atribut Model Filter, saya CreateErrorResponse() untuk mengembalikan respons kesalahan tetapi ini tidak memasukkan metode Log() di Global Exception Logger . Contoh penggunaan CreateErrorResponse dalam metode API :

return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);

Pencatat Pengecualian Global:

public class GlobalExceptionLogger : ExceptionLogger
    {
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        public override void Log(ExceptionLoggerContext context)
        {
            log.Error(context.Exception);
        }
    }

Satu-satunya cara agar metode Log() dipanggil adalah daripada menggunakan CreateErrorResponse, melainkan melemparkan Exception. Apakah ini benar?


person Rubans    schedule 19.01.2018    source sumber


Jawaban (1)


Anda harus mencatat kesalahan dan informasi jejak apa pun dalam aliran negatif yang sama tempat Anda membuat dan mengembalikan Respons Kesalahan.

Menggunakan pengecualian untuk mengontrol aliran aplikasi adalah praktik buruk, hindarilah.

Penggunaan penangan global adalah untuk menangani apa pun yang belum Anda tangani dan seharusnya untuk kasus yang Sangat luar biasa, Anda juga masuk ke sana dan menyajikan pesan kesalahan umum kepada pengguna, sementara Anda menyelesaikan kekacauan tentu saja di belakang :)

Jika saya salah memahami pertanyaan Anda, mohon koreksi saya.

person MarkovskI    schedule 19.01.2018