Ich habe die folgende Methode, die eine Excel-Arbeitsmappe öffnet und es zurückgibt, um in einer anderen Methode verwandt zu werden.Geben Sie null zurück, um unbekannte Ausnahmen von einer Methode in C#
private Excel.Workbook openWorkbook()
{
// Get excel file path returns the file path of the excel workbook if it exists, otherwise returns null.
List<string> filePaths = getExcelFilePath();
if (filePaths != null)
{
return excel.Workbooks.Open(filePaths[0]);
}
return null;
}
Wie Sie sehen, ich bin der Rückkehr null
eine try-catch
für eine nicht-exixtent Arbeitsmappe zu vermeiden, wenn ich diese aus einem anderen Methode aufrufen. Ist es eine schlechte Übung, dies zu tun? Ich habe eine ähnliche Sache in dem folgenden Verfahren, die eine Liste zurückkehren soll:
private List<string> getSOsToDelete()
{
// rawData is private variable in the class. If the workbook was not open this worksheet is set to null in another method similar to openWorkbook() above.
if (rawData != null)
{
List<string> ToDeleteSOs = new List<string>();
for (int i = rawData.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row; i > 1; i--)
{
if (rawData.Cells[i, 7].Value2.ToString() != "B2B" || rawData.Cells[i, 7].Value2.ToString() != "" || rawData.Cells[i, 8].Value2.ToString() != "Trns-Inc" || rawData.Cells[i, 8].Value2.ToString() != "")
{
string SONumber = rawData.Cells[i, 3].Value2.ToString();
ToDeleteSOs.Add(SONumber);
}
}
return ToDeleteSOs;
}
return null;
}
Wenn nicht, was ist die beste Art und Weise Methoden wie diese zu schreiben? Für Teil 2 könnte ich eine leere Liste zurückgeben und auf Länge prüfen. Ich bin mir nicht sicher, was besser ist. Bei der ersten Methode bin ich jedoch nicht sicher, was ich zurückgeben soll, wenn die Datei nicht existiert.
Es ist nichts falsch mit der Rückkehr 'null' wenn es Sinn macht (wie es tut in Ihrer ersten Funktion), aber die wirkliche Frage ist, warum versuchen Sie, einen Versuch zu vermeiden? .catch? – txtechhelp
Antworten auf diese werden sehr unterschiedlich sein, weil es hier nicht genügend Informationen gibt, um eine fundierte Meinung zu geben. Null von OpenWorkbook() sollte in Ordnung sein. Wenn die Arbeitsmappe nicht vorhanden sein muss, ist das Auslösen einer Ausnahme möglicherweise die bessere Antwort. –
Eigentlich versuche ich gerade die 'Null' an eine öffentliche Methode zu übergeben, damit ich die Abwesenheit von Arbeitsmappe oder ein Arbeitsblatt dort behandeln kann. Auf diese Weise kann ich diese spezielle Ausnahme nur einmal behandeln, indem ich den Benutzer auffordere, eine gültige Datei auszuwählen. Dies reduziert die Unordnung im Code und hat auch gehört, dass das Verringern von "Versuch-Fang" in der Leistung besser ist. – swdon