Кажется, я не могу выбросить исключение в асинхронных методах:
void Start ()
{
ReadAndThrow(null);
}
public static async Task ReadAndThrow(string path)
{
if(string.IsNullOrEmpty(path) == true)
{
Debug.Log("Wrong");
throw new Exception("Wrong");
}
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (StreamReader reader = new StreamReader(fs, Encoding.UTF8))
{
string line = null;
while ((line = await reader.ReadLineAsync()) != null) { }
}
}
}
При этом я вижу отладку, но исключение не печатается в консоли. Это действительно останавливает приложение, в основном, исключение происходит, но не печатается в консоли.
Я могу использовать попытку перехватить и распечатать ошибку, но почему исключение исключено из консоли? Это не показывает в разделе ошибок, я проверил, я пропустил бы его оттуда.
Как я могу получить исключение для печати?
EDIT:
Последний использованный код, не печатается:
async Task Start()
{
await ReadAndThrow(null);
}
async Task ReadAndThrow(string path)
{
Debug.Log("Start");
try
{
if (string.IsNullOrEmpty(path) == true) { Debug.Log("Wrong"); throw new Exception("Wrong in"); }
}catch(Exception e)
{
Debug.Log("Method" + e.Message);
throw;
}
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (StreamReader reader = new StreamReader(fs, Encoding.UTF8))
{
string line = null;
while ((line = await reader.ReadLineAsync()) != null)
{
}
}
}
}