Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Windows Phone - App.xaml.cs nezachytí výjimku

Aktivity
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:1.2.2014 12:06

Zdravím hoši, mám zase něco divného. Při zapnutí aplikace (Windows Phone) chci načíst data. Pokud data neexistují vyhodím výjimku.

try
           {
               Projects.Clear();
               ObservableCollection<Project> list = await dataSrl.LoadFileAsync<Project>("projects", Windows.Storage.ApplicationData.Current.LocalFolder);
               foreach (Project item in list)
                   Projects.Add(item);
           }
           catch (Exception e)
           {
               throw new ArgumentException("Error during loading data", e);
           }

v App.xaml.cs metodě Application_Lau­nching mám následující

try
{
  Manager.Load();
}
catch(Exception ex)
{ Debug.WriteLine(ex.Message); }

ale výjimka se nezachytí. Nějaké nápady ?

Odpovědět
1.2.2014 12:06
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Michal Žůrek - misaz:1.2.2014 12:18

co je to za vyjimku?

 
Nahoru Odpovědět
1.2.2014 12:18
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Nymsa:1.2.2014 12:23

Právě že žádná, prostě to nezachytí. Ten try/catch má výjimku z manageru zachytit. Ale ignoruje to / přeskočí. VS 13 mě už sem tam dokázali pěkně překvapit, zvlášť u WP. Někdy neukáže chybu a jenom to spadne a do Output napíše že "někde" došlo k výjimce, když máš štěstí napíše +- jaká

Nahoru Odpovědět
1.2.2014 12:23
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Nymsa:1.2.2014 12:27

"An exception of type 'System.Argumen­tException' occurred in Unknown Module. but was not handled in user code" tohle mi napíše. Nechápu v čem je problém.

Nahoru Odpovědět
1.2.2014 12:27
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:1.2.2014 12:38

Nakonec zjišťuju že to absolutně neumí zachytit výjimku a dál ji propagovat...Ne­napadá někoho kde by mohla být chyba ? Na googlu hledám, ale nemůžu najít nic pořádně

Nahoru Odpovědět
1.2.2014 12:38
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Michal Žůrek - misaz:1.2.2014 12:39

"but was not handled in user code" napíše snad úplně ke všemu. Nejlepší je ty soubory ošetřovat ifem.

 
Nahoru Odpovědět
1.2.2014 12:39
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Nymsa:1.2.2014 13:14

To je blbost. Může tam dojít k různým výjimkám. Proto také výjimky máme. Sice může existovat soubor, ale může dojít k chybě při čtení, špatné parsování, .... nebudu tam vše IFovat

Nahoru Odpovědět
1.2.2014 13:14
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Michal Žůrek - misaz:1.2.2014 13:38

ještě si zkus hodit breakpoint do catch, ať víš jestli se tam vůbec dostane a ať ti ukáže co je tam dál. Ony ty vyjimky na Windows Phone sice nic moc ze začátku neříkají, ale zobrazíš si detaily a innerException, dozvíš se mnohdy o hodně víc.

 
Nahoru Odpovědět
1.2.2014 13:38
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Nymsa:1.2.2014 13:41

Skočí to tam. Každopádně problém bude v celém VS a SDK. Ptal jsem teď někoho kdo si s WP rozumí už hodně dlouho. Pokud člověk má více verzí VS, SDK, IIS, Apache, MS-SQL server, ... nejspíš se to sesype. Takže reinstal SDK, případně reinstal VS. A v úplně nejhorším případě reinstal OS

BTW nefunguje ani toto

try {
int a = int.Parse("aaaa");
}
catch(Exception e){
throw new ArgumentException("Chyba při parsování",e);
}
Nahoru Odpovědět
1.2.2014 13:41
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:2.2.2014 18:10

Lidi,potřebuju opravdu help. Nevidíte kde je chyba ? Proč to výjimku nezachytí (resp. nepropaguje dál ?) Jedná se o Windows Phone.

public async void LoadDataAsync()
      {
          try
          {
              Projects.Clear();
              ObservableCollection<Project> list = await dataSrl.LoadFileAsync<Project>("projects", Windows.Storage.ApplicationData.Current.LocalFolder);
              foreach (Project item in list)
                  Projects.Add(item);
          }
          catch (Exception e)
          {
              throw new Exception("Error during loading data", e);
          }
      }

Debugger skončí na řádku throw new Exception...

Metodu volám

try
           { App.Manager.ProjectManager.LoadDataAsync(); }
           catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); }
Nahoru Odpovědět
2.2.2014 18:10
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:2.2.2014 18:15

Ještě jedna "zajímavost" (test).

try
           {
               await Task.Run(() =>
               {
                   for (int i = 0; i < 100; i++)
                   {
                       if (i % 10 == 0)
                       { int b = int.Parse("AAA"); }
                   }

               });
           }
           catch(Exception e)
           { throw new ArgumentException("Chyba", e); }

Na řádku int b debugger skončí

An exception of type 'System.FormatException' occurred in mscorlib.ni.dll but was not handled in user code

Additional information: Input string was not in a correct format.
Editováno 2.2.2014 18:15
Nahoru Odpovědět
2.2.2014 18:15
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
m4r10
Tvůrce
Avatar
m4r10:2.2.2014 18:17

http://stackoverflow.com/…-async-await

To je tak tezke pouzit google?

Editováno 2.2.2014 18:18
 
Nahoru Odpovědět
2.2.2014 18:17
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na m4r10
Petr Nymsa:2.2.2014 18:24

No, taky už mě to došlo jakmile jsem zkusil ten druhý test. BOže, občas mám pocit že kdybych prodával párek v rohlíku někde na ulici se budu 3x líp :@ Ale tak, asi kvůli tomuhle nás to všechny tak nádherně baví, no ne ? :D

Nahoru Odpovědět
2.2.2014 18:24
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.