0
我正在嘗試創建Azure工作者角色以下載電子郵件並將它們存儲在數據庫中。當我無法連接郵件服務器或使用郵件服務器進行身份驗證時,我會拋出一些例外情況,但捕獲這些郵件不起作用。無法捕獲Azure工作者角色中的異常
我拋出的異常沒有被try catch塊捕獲。這是爲什麼?我的輔助角色
的RunAsync方法:
private async Task RunAsync(CancellationToken cancellationToken)
{
// TODO: Replace the following with your own logic.
while (!cancellationToken.IsCancellationRequested)
{
Trace.TraceInformation("Working");
var emailManager = new EmailManager();
var emails = new List<Email>();
try
{
emails = emailManager.GetNewEmails("outlook.office365.com", 993, "email", "password");
}
catch(Exception ex)
{
Trace.TraceInformation("Error");
}
await Task.Delay(1000);
}
}
EmailManager.GetNewEmails()
public List<Email> GetNewEmails(string server, ushort port, string username, string password)
{
var imapClient = new ImapClient(server, port, username, password, false);
if (!imapClient.Connect())
throw new Exception("Unable to connect to server.");
if (!imapClient.Authenticate())
throw new Exception("Unable to authenticate with server.");
var messages = imapClient.GetMessages();
var emails = Mapper.Map<List<MailMessage>, List<Email>>(messages);
return emails;
}
你確定你的'EmailManager()'構造函數沒有拋出異常嗎? –
將while循環放入try catch中。這將確保其他語句不會拋出異常。 –
@BrendanGreen我已經在GetNewEmails()內部創建了斷點,並通過逐步遍歷我到達imapClient.Connect()的代碼,然後停止。這是因爲這是我拋出異常的地方,它最終沒有被我的RunAsync方法中的catch塊捕獲。我試圖弄清楚爲什麼它沒有被捕獲到。 – Maritim