Edit:
private void button1_Click(object sender, EventArgs e) {
string summary = "TestSummary";
string description = "TestDescription";
string type = "Task";
string projectKey = "TST";
string priority = "p - 3";
var issueCreated = createIssueWrapper(summary, description, type, priority, projectKey).Result;
}
public async Task <string> createIssueWrapper(string summary, string description, string type, string priority, string projectKey) {
string returnVal = "";
returnVal = await createIssue(summary, description, type, priority, projectKey);
return returnVal;
}
public async Task <string> createIssue(string summary, string description, string type, string priority, string projectKey) {
string returnVal = "";
try {
var issue = jira.CreateIssue(projectKey);
issue.Type = type;
issue.Priority = priority;
issue.Summary = summary;
issue.Description = description;
var jiraIssue = await issue.SaveChangesAsync();
if (jiraIssue != null) {
returnVal = jiraIssue.Key.ToString();
}
}
catch (Exception ex) {
returnVal = "There was a problem creating the issue. Please try again.";
}
return returnVal;
}
Я пытался выяснить, почему асинхронные методы Atlassian.NET Jira не возвращают исключения, как их обычные (не асинхронные) методы.
В качестве примера я вызываю асинхронный метод createIssue
, чтобы создать новую проблему Jira, например:
string summary = "TestIssue";
string description = "TestDescription";
string type = "Task";
string projectKey = "TST";
string priority = "p - 3";
Task<string> created = createIssue(summary, description, type, priority, projectKey);
Вот асинхронный метод:
public async Task<string> createIssue(string summary, string description, string type, string priority, string projectKey)
{
string key = "";
try
{
var issue = jira.CreateIssue(projectKey);
issue.Type = type;
issue.Priority = priority;
issue.Summary = summary;
issue.Description = description;
var jiraIssue = await issue.SaveChangesAsync();
if (jiraIssue != null)
{
key = jiraIssue.Key.ToString();
}
}
catch (Exception ex)
{
}
return key;
}
Я добавил точку останова на линии await issue.SaveChangesAsync()
и перешагнул через нее. Никаких исключений не выдается, поэтому код продолжает ждать завершения вызова. Ничто не говорит мне, что есть проблема.
Итак, я преобразовал метод createIssue
в не асинхронный:
var issue = jira.CreateIssue(projectKey);
issue.Type = type;
issue.Priority = priority;
issue.Summary = summary;
issue.Description = description;
issue.SaveChanges();
Здесь я получаю исключение, сообщающее мне о фактической проблеме:
{"Объект с идентификатором" и именем "p - 3" не найден для типа "Atlassian.Jira.IssuePriority". Доступно: [10000: p-3,10001: N / A, 4: p-4 , 3: р-2,2: 1,1-р: п-0] "}
Можно ли отлавливать эти типы исключений в методах Async? Нужно ли создавать обработчик или делать что-то еще?