У меня есть следующий код:бросания исключения несколько раз
static int GetLastAddedIDHelper(OleDbConnection connection)
{
try
{
// Init variables.
OleDbCommand command = null;
string cmdText = "SELECT @@IDENTITY";
if (connection != null)
command = new OleDbCommand(cmdText, connection);
else
throw new ArgumentNullException("connection", "The connection was passed as null. Therefore the globally used connection is used but was never set.");
return (int)command.ExecuteScalar();
}
catch (Exception ex) { throw ex; }
}
public static int GetLastAddedID()
{
try
{
return GetLastAddedIDHelper(_Connection);
}
catch (Exception ex) { throw ex; }
}
private void Button_Click_Action()
{
try
{
int i = AccessDbServiceBase.GetLastAddedID();
}
catch (Exception ex)
{
MessageBox.Show(ExceptionHandler.GetExceptionMessage(ex));
}
}
Приведенные выше код будет получить последний вставленный ID из базы данных Access для меня. Теперь, чтобы сделать это, Button_Click_Action
позвонит GetLastAddedID
, и это позвонит GetLastAddedIDHelper
. Когда exception
происходит в GetLastAddedIDHelper
, я исключаю исключение до основного метода Button_Click_Action
.
Мне интересно, если я делаю это правильно, например, нужен ли GetLastAddedID
, следует ли использовать throw
вместо throw ex
, ...?
Так что, если методы 'GetLastAddedIDHelper' и' GetLastAddedID' используются только в других методах, которые будут иметь обработку исключений, лучше просто оставить «try ... catch», если бросать - это единственное, что я делаю? – Krowi
Да, это недостаток. И если вы окажетесь в ситуации, когда вам нужно реконструировать (вы, вероятно, не будете делать это очень часто, но есть некоторые варианты использования), то используйте «throw» для правильного восстановления. Вы можете найти «C# rethrow» в Google для получения более подробной информации о причинах. –