在C#中,使用依賴注入(DI)處理異常的方法有很多種。以下是一些建議:
public class MyService
{
public string DoWork(string input)
{
try
{
// 可能拋出異常的代碼
}
catch (Exception ex)
{
// 處理異常的代碼
return "Error: " + ex.Message;
}
}
}
public class MyCustomException : Exception
{
public MyCustomException(string message) : base(message) { }
}
public class MyService
{
public string DoWork(string input)
{
try
{
// 可能拋出異常的代碼
}
catch (MyCustomException ex)
{
// 處理自定義異常的代碼
return "Error: " + ex.Message;
}
}
}
例如,在ASP.NET Core中,你可以使用以下代碼配置異常處理程序:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews()
.ConfigureExceptionHandler((context) =>
{
context.Response.ContentType = "text/html";
var error = context.ExceptionHandled ? context.Exception : new Exception("An error occurred while processing your request.");
context.Response.WriteAsync(error.ToString());
})
.AddRazorPages();
}
例如,你可以在服務(wù)中觸發(fā)一個事件,并在事件處理程序中記錄異常:
public class MyService
{
public event Action<Exception> ErrorOccurred;
public string DoWork(string input)
{
try
{
// 可能拋出異常的代碼
}
catch (Exception ex)
{
ErrorOccurred?.Invoke(ex);
return "Error: " + ex.Message;
}
}
}
然后,在應(yīng)用程序的其他部分訂閱事件并處理異常:
public class ErrorHandler
{
public void OnErrorOccurred(Exception ex)
{
// 記錄異常的代碼
}
}
總之,處理C#依賴注入中的異常需要根據(jù)你的應(yīng)用程序需求選擇合適的方法。你可以使用try-catch語句、自定義異常、依賴注入容器和事件處理等方法來處理異常。