मेरे पास एक सामान्य वर्ग है जो टी:क्या ऐसा अपवाद पकड़ना संभव है जिसे आप संभाल नहीं सकते (सी # में)?
public abstract class ErrorHandlingOperationInterceptor<T> : OperationInterceptor where T : ApiException { private readonly Func<OperationResult> _resultFactory; protected ErrorHandlingOperationInterceptor(Func<OperationResult> resultFactory) { _resultFactory = resultFactory; } public override Func<IEnumerable<OutputMember>> RewriteOperation(Func<IEnumerable<OutputMember>> operationBuilder) { return() => { try { return operationBuilder(); } catch (T ex) { var operationResult = _resultFactory(); operationResult.ResponseResource = new ApiErrorResource { Exception = ex }; return operationResult.AsOutput(); } }; } }
के अपवादों को पकड़ता है विशिष्ट अपवादों के लिए उप-वर्गों के साथ उदा।
public class BadRequestOperationInterceptor : ErrorHandlingOperationInterceptor<BadRequestException> { public BadRequestOperationInterceptor() : base(() => new OperationResult.BadRequest()) { } }
यह सब पूरी तरह से काम करने लगता है। लेकिन, किसी भी तरह, लॉग में (एक बार, हर बार नहीं) एक अवैध कैस्ट अपवाद है:
System.InvalidCastException: Unable to cast object of type 'ErrorHandling.Exceptions.ApiException' to type 'ErrorHandling.Exceptions.UnexpectedInternalServerErrorException'. at OperationModel.Interceptors.ErrorHandlingOperationInterceptor`1.c__DisplayClass2.b__1() in c:\BuildAgent\work\da77ba20595a9d4\src\OperationModel\Interceptors\ErrorHandlingOperationInterceptor.cs:line 28
रेखा 28 पकड़ है।
मुझे क्या याद आ रही है? क्या मैंने वास्तव में कुछ गूंगा किया है?
ठीक है, वहाँ हमेशा है 'TruthException', क्योंकि आप को संभाल नहीं सकता यह –
कौन सा कोड में लाइन लाइन 28 है? –
@ किरेन जॉनस्टोन, आपने मेरी टिप्पणी चुरा ली !! –