程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 編程-C#異常處理相關,try catch

編程-C#異常處理相關,try catch

編輯:編程綜合問答
C#異常處理相關,try catch
 using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
    class Photo
{//Photo類

    string _title;

    public Photo(string title)
    {//構造函數
            this._title = title;
    }

    public string Title
    {//訪問器
        get
        {
            return _title;
        }
    }
    public override string ToString()
    {
        try
        {
            return _title;
        }
        catch (NullReferenceException e)
        {
            throw new NullReferenceException("Not Found");
        }
    }
}

    class Album
    {
        // 該數組用於存放照片
        Photo[] photos;
        public Album(int capacity)
        {
            photos = new Photo[capacity];
        }

        public Photo this[int index]
        {//索引器
            set { 
                if (index<0 || index>=photos.Length)  
                    Console.WriteLine("Wrong Index");
                else
                    photos[index] = value; }
            get {
                if (index < 0 || index >= photos.Length)
                    return null;
                return photos[index]; }
        }

        public Photo this[string str]
        {//索引器 
            get {
                    int i = 0;
                    while (i < photos.Length)
                    {
                        if (photos[i].ToString() == str)
                            return photos[i];
                        i++;
                    };
                    return null;
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 創建一個容量為 3 的相冊
            Album family = new Album(3);
            // 創建 3 張照片
            Photo first = new Photo("Jeny ");
            Photo second = new Photo("Smith");
            Photo third = new Photo("Lono");
            // 向相冊加載照片
             family[0] = first;
             family[1] = second;
             family[2] = third;
            // 按索引檢索
            Photo objPhoto1 = family[2]; 
            Console.WriteLine(objPhoto1.Title);
            // 按名稱檢索
            Photo objPhoto2 = family["Jeny"];
            Console.WriteLine(objPhoto2.Title);
            Console.Read();
        }    

    }
}

運行後報錯,原因在於Photo objPhoto2 = family["Jeny"]中"Jeny"與"Jeny "(Jeny後有空格)不相等,索引器返回值為null。此時objPhoto2為null,不能執行Console.WriteLine(objPhoto2.Title);

請問這個異常是誰呢麼類型的異常?我該如何使用異常處理,使其輸出“Not Found”?
如果不是在自己重寫的Tostring()函數中,那麼應當在那裡捕獲這個異常?

第一次提問,略惶恐,先謝謝前輩們

最佳回答:


在toString中沒有必要使用try...catch
完全可以if判斷下objPhoto2是否null
我感覺try...catch沒有必要刻意去使用,簡單的用if就行,真的是有必要的時候用才是最合理的
真想用的話
try
{
Console.WriteLine(objPhoto2.Title);;
}
catch (NullReferenceException e)
{
throw new NullReferenceException("Not Found");
}

zsm415460830
zsm415460830
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved