我没有太多好的编程经验,OO
但我想学习,今天发生了一种情况,我认为如果我的观察正确,我可以提高我的错误处理技能。
我有一个事件,其代码在逻辑上分为两部分:
private void btnSave_Click(object sender, EventArgs e)
{
IList<AppConfig> AppConfigs = AppConfigService.All().Where(a => (a.IsActive == true) && (a.ConfigProperty == "MaterialImages")).ToList();
string ImageNameFilter = txtCode.Text;
if (!ucFileExplorer.IsSavedImage(AppConfigs, ImageNameFilter))
{
MessageBox.Show("Error");
return;
}
if (Save())
{
LoadForm<Materials>();
}
}
第二部分只是调用Save()
方法,但我的问题是关于第一部分。在那里我调用了一个方法,该方法应该复制用 a 选择的图像OpenFileDialog
,整个逻辑都在我为文件浏览而制作的用户控件中,因为我以多种形式使用它。实际应对的方法是这样的:
public bool IsSavedImage(IList<AppConfig> AppConfigs, string ImageNameFilter)
{
bool IsCopied = false;
try
{
string imgPath = AppConfigs[0].ConfigValue.ToString();
File.Copy(selectedFile, imgPath + "\\" + ImageNameFilter + slectedFileName + ".jpeg");
IsCopied = true;
}
catch (IOException copyError)
{
MessageBox.Show("Error saving image!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
return IsCopied;
}
这里开始我的问题。我想我需要try-catch
这里的子句,因为这是实际执行发生的地方,并且更容易返回正确的状态(真或假)。但我认为实际copyError
应该在调用方法中处理(在这种情况下是我的 btn Click 事件)。所以我有两个问题,处理这个异常的正确方法是什么,如果我想将它传递到调用方法的地方我该怎么做?