我们经常在我们的方法中使用try catch语句,如果方法可以返回一个值,但是值不是字符串,如何返回异常消息? 例如:
public int GetFile(string path)
{
int i;
try
{
//...
return i;
}
catch (Exception ex)
{
// How to return the ex?
// If the return type is a custom class, how to deal with it?
}
}
如何返回异常?
答案 0 :(得分:2)
如果你想在catch块中做一些有用的事情,比如记录异常,你可以remove
尝试catch块从catch块中抛出异常或throw
异常。如果您想从您的方法发送异常消息并且不想抛出异常,那么您可以使用 out 字符串变量来保存调用方法的异常消息
public int GetFile(string path, out string error)
{
error = string.Empty.
int i;
try
{
//...
return i;
}
catch(Exception ex)
{
error = ex.Message;
// How to return the ex?
// If the return type is a custom class, how to deal with it?
}
}
如何调用该方法。
string error = string.Empty;
GetFile("yourpath", out error);
答案 1 :(得分:2)
如果您只想抛出任何异常,请删除try / catch块。
如果您想处理特定的例外,您有两个选择
仅处理这些例外情况。
try
{
//...
return i;
}
catch(IOException iex)
{
// do something
throw;
}
catch(PathTooLongException pex)
{
// do something
throw;
}
在通用处理程序中为某些类型执行某些操作
try
{
//...
return i;
}
catch(Exception ex)
{
if (ex is IOException)
{
// do something
}
if (ex is PathTooLongException)
{
// do something
}
throw;
}
答案 2 :(得分:0)
你可以直接抛出异常,并从调用方法或事件中捕获异常。
public int GetFile(string path)
{
int i;
try
{
//...
return i;
}
catch (Exception ex)
{
throw ex;
}
}
并在调用这样的方法中捕获...
public void callGetFile()
{
try
{
int result = GetFile("your file path");
}
catch(exception ex)
{
//Catch your thrown excetion here
}
}