2011-01-14 18 views
5

W moim x ++ kod mam następująceDynamics AX 2009, Exception Handling

void run() { 
    try 
    { 
     startLengthyOperation(); 
     this.readFile();  
    } 
    catch (Exception::Deadlock) 
    { 
     retry; 
    } 
    catch (Exception::Error) 
    { 
     error(strfmt("An error occured while trying to read the file %1", filename)); 
    } 
    catch 
    { 
     error("An unkown error has occured"); 
    } 

    endLengthyOperation(); 
} 

jestem uderzanie końcowy zaczep (przed, byłem coraz żadnej wiadomości o wyjątkami). Ale chcę wiedzieć, co jest NAPRAWDĘ dzieje się i powoduje wyjątek. Jak mogę się dowiedzieć, jaki jest wyjątek?

Odpowiedz

5

Możesz dodać add stackTrace to the info log i dodać wiadomość informacyjną, gdy dotrzesz do ostatniego haczyka. To pokazuje dokładnie, co kod robił w momencie, gdy dotarł do haczyka.

0

Kilka rzeczy: - Zakleszczenie, o ile wiem, powoduje zakleszczenia w żądaniach bazy danych. Nie jestem pewien, co robi plik readFile, ale nie brzmi to tak, jak jego zapytanie do bazy danych. - Metody startLengthyOperation (i koniec) są po to, aby kursor myszy wyglądał jak klepsydra wydłużywszy operację.

Nie jestem pewien, co robi plik readFile. Kiedy myślę o AsciiIO i TextIO zwykle czytają coś, więc mogę tylko założyć, że robisz to w readfile. Zwykle robię te kontrole: Sprawdź, czy ścieżka do plików jest czymś innym niż pusta. Użyj FileIOPermission, aby potwierdzić odczyt lub zapis. Utwórz instancję obiektu AsciiIO lub TextIO, podając ścieżkę do pliku jako dane wejściowe. Sprawdź, czy obiekt jest prawidłowy i czy nie ostrzegł użytkownika.

Mam nadzieję, że to pomoże, a jeśli tak, to zagłosuj.

0

To może być łatwo Exception::CLRError, w tym przypadku widzi ten problem można wybrać, aby ponownie rzucić błąd:

throw error(AifUtil::getClrErrorMessage()); 

lub Exception::Internal, to coś jak:

System.Exception e = CLRInterop::getLastException(); 
if (e) 
    throw error(e.ToString()); 

lub Exception::CodeAccessSecurity lub cokolwiek innego - najpierw musisz pokazać kod od this.readFile(). Podczas debugowania kodu, który wiersz jest przyczyną błędu?