C#类异常传递到UI层处理
通常用在类中处理异常,替代直接弹窗,使UI层可以统一处理异常。
定义异常操作类,通常与需要报告异常的类定义在同一文件。
/// <summary>
/// SVN操作异常类
/// </summary>
public class SvnOperationException : Exception
{
public SvnOperationException(string message, Exception inner) : base(message, inner) { }
}
在需要报告异常的类中实现抛出异常。
public void TortoiseSVN_ShowLog(string projectName)
{
string url = GenerateSvnUrl(projectName); // 修改为调用新方法
try
{
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = "TortoiseProc.exe",
Arguments = $"/command:log /path:\"{url}\"",
UseShellExecute = true
});
}
catch (Exception ex)
{
throw new SvnOperationException($"无法启动TortoiseSVN日志窗口", ex);
}
}
UI层实现异常的报告:
try
{
_svnOperator.TortoiseSVN_ShowLog(projectName);
}
catch (Exception ex)
{
MessageBox.Show($"异常: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
}
如此便实现了UI层弹窗报告错误信息:
异常: 无法启动TortoiseSVN日志窗口
其他文章