2015-04-07 4 views
0

Une brève explication rapide sur ma question: Je veux que mon programme imprime un message d'erreur sans écraser le programme si j'entre un numéro qui n'existe pas dans la base de données de mon programme. Voici mon code:Comment imprimer un message d'erreur si j'entre une entrée qui n'existe pas dans la base de données? N-Tier

listBox1.Items.Clear(); 

    BusinessTier.Business BT = new BusinessTier.Business("netflix.mdf"); 

    if (this.txtMovieID == null) //Hoping this would work and return to the program if I enter a wrong input. 
    { 
    listBox1.Items.Add("**Error, this movie ID doesn't exist, or database is empty?!"); 
    } 

    int N = System.Convert.ToInt32(this.txtMovieID.Text); 
    BusinessTier.Movie movie = BT.GetMovie(N); 

    BusinessTier.MovieDetail movieid = BT.GetMovieDetail(movie.MovieID); //this part will crash the program if I type a number like 0 or greater than 250 when my database contained 250 rows. 


    //display results: 

    listBox1.Items.Add(movie.MovieName); 

    foreach (BusinessTier.Review r in movieid.Reviews) 
    { 
    listBox1.Items.Add(r.UserID + ": " + r.Rating); 
    } 
+0

Quelle est la '== null' check alors ... lance une exception? Pouvons-nous voir la méthode 'BusinessTier.Business()' aussi? –

+0

Si j'entre une entrée vide, elle lèvera une exception. Et sur BusinessTier.Business() a beaucoup de méthodes voudrais-tu que je les tape? – CR9191

+0

Lorsque vous appelez 'BT.GetMovie (N)' pour un film qui n'existe pas, quelle valeur finit par être stockée dans la variable "movie"? –

Répondre

1

La première chose: vous traitez toujours la partie restante du processus, i.e. récupérer les détails du film, même si this.txtMovieID est nulle. Vous devez arrêter le traitement et return

listBox1.Items.Clear(); 

    BusinessTier.Business BT = new BusinessTier.Business("netflix.mdf"); 

    if (this.txtMovieID == null) //Hoping this would work and return to the program if I enter a wrong input. 
    { 
    listBox1.Items.Add("**Error, this movie ID doesn't exist, or database is empty?!"); 
    return; // exit out if the MovieID is null 
    } 

Deuxième: mettre un contrôle pour voir si le résultat de GetMovie(N) est nulle ou non et si elle est nulle, briser et return

int N = System.Convert.ToInt32(this.txtMovieID.Text); 
    BusinessTier.Movie movie = BT.GetMovie(N); 

    if (movie == null) return; // exit if the GetMovie result is null 

    BusinessTier.MovieDetail movieid = BT.GetMovieDetail(movie.MovieID); //this part will crash the program if I type a number like 0 or greater than 250 when my database contained 250 rows. 

    //display results: 

    listBox1.Items.Add(movie.MovieName); 

    foreach (BusinessTier.Review r in movieid.Reviews) 
    { 
     listBox1.Items.Add(r.UserID + ": " + r.Rating); 
    }