Как я могу проверить файл для IndexOutOfRangeException и войти в него? - PullRequest
0 голосов
/ 25 октября 2019

ОБНОВЛЕНИЕ

try
        {
            //Attemps string conversion for each of the point's variables
            int.TryParse(row[0], out q.pointID); //Checks for existence of data on the line...
            float.TryParse(row[1], out q.xValue); //Input x-value
            float.TryParse(row[2], out q.yValue); //Input y-value
            float.TryParse(row[3], out q.zValue); //Input z-value
            float.TryParse(row[4], out q.tempValue); //Input temp-value
        }
        catch (IndexOutOfRangeException)
        {
            Debug.Log("File out of range...");
            errorLogScript.errorCode = 1100;
            SceneManager.LoadScene(4);
        }

Это текущий код, который у меня есть, но кажется, что он зависает, когда я пытаюсь перенести сцену на экран ошибок. При этом я не получаю сообщение об ошибке, но мой код зависает, и Unity вылетает всякий раз, когда я пытаюсь проверить эту ошибку.

У кого-нибудь есть идеи, как мне это исправить?

OP

В настоящее время я работаю над приложением в Unity и хочусоздать систему сообщений об ошибках / сбоях, которая показывает пользователю уникальный код ошибки при сбое загрузки. Поскольку это конкретное приложение будет использоваться многими людьми с множеством различных навыков, я хотел сломать его настолько, насколько смогу, прежде чем выпустить его позднее в этом году. При этом я хотел бы дать краткую справку о том, что пользователь сможет найти в документации.

Следующий код демонстрирует, что происходит, если пользовательский ввод filepath не существует ...

if (File.Exists(dropDownMenuScript.dataFileName + ".csv"))
    {
        Debug.Log("File found, loading..."); //Debugs success to console
    }
    else
    {
        Debug.Log("File not found, aborting..."); //Debugs the problem to console
        errorLogScript.errorCode = 1000; //Shows the code "E1000"
        SceneManager.LoadScene(4); //Loads the error-screen which displays the code
    }

Недавно я обнаружил еще одну ошибку, которая читает;«IndexOutOfRangeException» - в этом случае это относится к разбору файла, то есть он существует, но не соответствует формату данных, совместимому с программой. Я хотел бы создать еще один журнал ошибок для этой проблемы, но я знаю, как это сделать, поскольку это ошибка редактора Unity.

Я прошу прощения, если это не совсем ясно, но я предоставлю любыеконтекст нужен, если вам это нужно. Спасибо!

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Не можете ли вы использовать блок try-catch и, в частности, прерывания для IndexOutOfRangeException?

try
{
    //Your code...
}
catch(IndexOutOfRangeException iore)
{
    //Log here
}
0 голосов
/ 25 октября 2019

Это то, что у меня есть сейчас, но оно выдает ошибку «catch (IndexOutOfRangeException iore)». Это говорит о том, что iore инициализируется, но никогда не используется. Также мне нужно вызвать каталог для IndexOutOfRangeException ? Следует отметить, что я использую движок Unity.

try { //Attemps string conversion for each of the point's variables int.TryParse(row[0], out q.pointID); //Checks for existence of data on the line... float.TryParse(row[1], out q.xValue); //Input x-value float.TryParse(row[2], out q.yValue); //Input y-value float.TryParse(row[3], out q.zValue); //Input z-value float.TryParse(row[4], out q.tempValue); //Input temp-value (For use in Heatmaps) } catch (IndexOutOfRangeException iore) { Debug.Log("File out of range..."); errorLogScript.errorCode = 1100; SceneManager.LoadScene(4); }

...