10 Ekim 2017 Salı

C# Exception

throw
Açıklaması şöyle
A throw statement can be used in a catch block to re-throw the exception that the catch block caught. In this case, the throw statement does not take an exception operand.
Aynı C++'taki gibi exception'ı tekrar fırlatır. Şöyle yaparız.
try
{
  Method();
}
catch(MethodException)
{
  throw;
}
Sadece throw Nerede Kullanılır
Örnek
Elimizde şöyle bir kod olsun. f() çalşırken exception olursa x değişkeni kapatılır. Eğer x SqlConnectionHandler ise bu durum daha kolay anlaşılaibilir.
void f() {
  try {
    using (var x = AcquireResource()) {
      ...
    }
  } catch {
    throw;
  }
}
Internal ve External Exception
Çok katmanlı mimarilerde katmanlar kendi exceptionlarını tanımlayabilir. Katmanlar arası çağrılarda internal exception nesnelerinin arayüze uygun tiplere çevrilmesi gerekir.

Örneğin bir rest servisi geliştiriyor olalım. Her internal exception bir Http exception tipine çevrilir ve json verisi gönderilir.
try {
        securityService.login(credentials);
    } catch (InvalidOAuthProviderException e) {
        throw new BadRequestHttpException(e.getMessage(), e.getCode());
    } catch (UserNotFoundException e) {
        throw new NotFoundHttpException(e.getMessage(), e.getCode());
    } catch (InactiveUserException e) {
        throw new NotFoundHttpException(e.getMessage(), e.getCode());
    } catch (InvalidOAuthTokenException e) {
        throw new ForbiddenHttpException(e.getMessage(), e.getCode());
    }


Hiç yorum yok:

Yorum Gönder