我有以下接口:「並非所有的代碼路徑返回一個值」使用「try和catch」塊
//define a method to create a Stream from a generic source
interface IStream
{
Stream GetStream();
}
和
//define a method to deserialize an object from a stream
interface IDeserializer<T>
{
T GetObject();
}
及以下兩種實現它們的類:
//create a new Stream from a URL source
class UrlReader : IStream
{
private String url;
public UrlReader(String u)
{ url = u; }
public Stream GetStream()
{
using (var client = new WebClient())
{
Stream stream = client.OpenRead(url);
return stream;
}
}
}
和
//deserialize a JSON object implementing the interface IDeserializer
class JsonDeserializer<T> : IDeserializer<T>
{
private String json;
public JsonDeserializer(String j)
{ json = j; }
public T GetObject()
{
return JsonConvert.DeserializeObject<T>(json);
}
}
我想將try和catch塊添加到兩個方法來管理異常,但是如果我這樣做不是所有的代碼路徑都會返回一個值。我知道解決這個問題的一種方法是在try塊之前將decalre和初始化變量返回。但是我不能初始化Stream類型的變量,因爲這是一個抽象類,我不能初始化一個泛型類型變量T. 您能否請告知如何解決這個問題?