2012-01-24 40 views
3

天兒真好人錯誤:類型System.NullReferenceException「的異常出現在EXE

我不斷收到上面,每當我跑這個錯誤並雞姦了我,爲什麼。

我做了一個步驟,發現當我點擊添加對象到集合(在下面的代碼中標記)時發生異常。任何想法可能會導致這種情況?

Img和Category類是具有inotify接口的普通ol類,而Movies類具有Observable集合接口。

不管怎麼說,這裏是有問題的代碼...

 public void LoadMovieLibrary(string libraryfile , Movies obj) 
    { 
     try 
     { 
      var libraryXML = XElement.Load(libraryfile); 
      if (libraryXML != null) 
      { 
       IEnumerable<XElement> movies = from element in libraryXML.Descendants("movie") select element; 
       foreach (XElement movie in movies) 
       { 
        ObservableCollection<Category> categoryGroup = new ObservableCollection<Category>(); 
        IEnumerable<XElement> categories = from element in movie.Descendants("category") select element; 
        foreach (XElement category in categories) 
        { 
         categoryGroup.Add(
          new Category(
           int.Parse(category.Attribute("id").Value) , 
           category.Attribute("name").Value 
           ) 
          ); 
        } 

        ObservableCollection<Img> imgGroup = new ObservableCollection<Img>(); 
        IEnumerable<XElement> imgs = from element in movie.Descendants("image") select element; 
        foreach (XElement img in imgs) 
        { 
         imgGroup.Add(
          new Img(
           img.Attribute("type").Value , 
           img.Attribute("url").Value 
           ) 
          ); 
        } 
        try 
        { 
         obj.Add(// <= this is where it breaks 
          new Movie(
           movie.Element("name").Value , 
           int.Parse(movie.Element("id").Value) , 
           movie.Element("imdbid").Value , 
           movie.Element("overview").Value , 
           movie.Element("tagline").Value , 
           movie.Element("released").Value , 
           int.Parse(movie.Element("runtime").Value) , 
           movie.Element("trailer").Value , 
           categoryGroup , 
           imgGroup , 
           movie.Element("filename").Value 
           ) 
          ); 
        } 
        catch (Exception exception) 
        { 
         MessageBox.Show(exception.Message , "Error" , MessageBoxButton.OK , MessageBoxImage.Error); 
        } 
       } 
      } 
     } 
     catch (Exception exception) 
     { 
      MessageBox.Show(exception.Message , "Error" , MessageBoxButton.OK , MessageBoxImage.Error); 
     } 
    } 

編輯:

非常感謝

原來我離開了上下劃線...

  • movie.Element(「imdbid」).Value

和它應該被

  • movie.Element( 「imdb_id」).value的
+0

我猜想這個xml文件沒有預期的元素之一(所以你在'null'上做'.Value')。那或者'obj'。儘管如此,你仍然可以比我們更好地瞭解它。 –

回答

4

每當你嘗試做一些與空引用一個NullReferenceException被拋出,例如調用方法,訪問屬性或字段等。在您的情況下,這意味着以下某項爲空:

  • obj
  • movie
  • movie.Element("name")
  • movie.Element("id")
  • movie.Element("imdbid")
  • movie.Element("overview")
  • movie.Element("tagline")
  • movie.Element("released")
  • movie.Element("runtime")
  • movie.Element("trailer")
  • movie.Element("filename")

即所有你訪問該行的屬性或方法的東西。

在調試器中測試它們以查看哪些爲空。

+0

+1比我的回答更好;) – Lazarus

+0

非常感謝。原來,我在movie.Element(「imdbid」)中省略了下劃線。它應該是movie.Element(「** imdb_id **」)。我現在覺得自己有點白癡了:X – Ubermonk

相關問題