Теоретически, это должно работать,
Но я предлагаю взглянуть на использование $ eq вместо этого.
Вот пример
const ret = await dbTable.find( { shortUrl: { $eq: url3 } } );
В Java вы должны либо обработать исключение, либо пометить метод как тот, который может его генерировать, используя ключевое слово throws
.
В C # нет этого или эквивалентного ключевого слова, как в C #, если вы не обрабатываете исключение, оно будет всплывать, пока не будет обнаружено, или, если оно не будет обнаружено, завершит программу.
Если вы хотите справиться с этим, затем выполните повторное выбрасывание, вы можете сделать следующее:
try
{
// code that throws an exception
}
catch(ArgumentNullException ex)
{
// code that handles the exception
throw;
}
Если бы цель c# метода состоит в том, чтобы только выдать исключение (как тип возврата js, говорит), я рекомендовал бы просто возврату то исключение. Посмотрите, что пример ревет:
public EntityNotFoundException GetEntityNotFoundException(Type entityType, object id)
{
return new EntityNotFoundException($"The object '{entityType.Name}' with given id '{id}' not found.");
}
public TEntity GetEntity<TEntity>(string id)
{
var entity = session.Get<TEntity>(id);
if (entity == null)
throw GetEntityNotFoundException(typeof(TEntity), id);
return entity;
}
На самом деле отсутствие проверяемых исключений в C# можно считать хорошим или плохим явлением.
Сам я считаю это хорошим решением, поскольку проверяемые исключения создают следующие проблемы:
Из-за этого в большинстве крупных приложений при возникновении проверяемых Исключений вы часто увидите следующий паттерн:
try {
// Some Code
} catch(SomeException ex){
throw new RuntimeException(ex);
}
Что по сути означает эмуляцию того, как C#/.NET обрабатывает все Исключения.
Оп спрашивает о C#-эквиваленте throws
в Java - не о throw
ключевом слове. Оно используется в подписях методов в Java, чтобы указать, что может быть выброшено проверяемое исключение.
В C# нет прямого эквивалента проверяемого исключения Java. В C# нет эквивалентного пункта в подписи метода.
// Java - need to have throws clause if IOException not handled
public void readFile() throws java.io.IOException {
...not explicitly handling java.io.IOException...
}
переводится как
// C# - no equivalent of throws clause exceptions are unchecked
public void ReadFile()
{
...not explicitly handling System.IO.IOException...
}
Вот ответ на аналогичный вопрос, который я только что финансировал на bytes.com :
Краткий ответ - нет, в C # нет проверенных исключений. В разработчик языка обсуждает это решение в этом интервью:
http://www.artima.com/intv/handcuffs.html
Ближайшее, что вы можете получить, - это использовать теги в вашем XML документацию и распространять документы, созданные NDoc, вместе с вашим код / сборки, чтобы другие люди могли видеть, какие исключения вы выбрасываете (это именно то, что делает MS в документации MSDN). Ты не можешь полагаться на компиляторе, чтобы сообщить вам о необработанных исключениях, однако, например, вы, возможно, привыкли в java.
Вы спрашиваете об этом:
Повторное генерирование исключения
public void Method()
{
try
{
int x = 0;
int sum = 100/x;
}
catch(DivideByZeroException e)
{
throw;
}
}
или
static void Main()
{
string s = null;
if (s == null)
{
throw new ArgumentNullException();
}
Console.Write("The string s is null"); // not executed
}