为Silverlight添加异常与其他的VS项目差不多,同样使用Try/Catch/Finally语法。下面的示例程序在画布上绘制一个矩形,用来代表一个按钮,当单击该按钮时,触发一个异常,并在一个TextBlock中显示异常信息,XAML代码如下所示。
<Canvas x:Name="parentCanvas"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Page_Loaded"
x:Class="OnErrorException.Page;assembly=ClientBin/OnErrorException.dll"
Width="640"
Height="480"
Background="White"
>
<Rectangle Canvas.Left="100" Canvas.Top="100" Width="200" Height="100" Fill="Yellow" Stroke="Black" StrokeThickness="1" x:Name="btn"></Rectangle>
<TextBlock x:Name="Msg" Canvas.Left="100" Canvas.Top="300" Foreground="Red"></TextBlock>
</Canvas>
在后置代码中,为矩形添加了一个鼠标单击事件,当单击该矩形时,直接触发一个异常,并在TextBlock对象中显示异常信息,代码如下所示。
namespace OnErrorException
{
public partial class Page : Canvas
{
public void Page_Loaded(object o, EventArgs e)
{
// Required to initialize variables
InitializeComponent();
btn.MouseLeftButtonDown += new MouseEventHandler(btn_MouseLeftButtonDown);
}
//定义鼠标单击事件处理器,在Try块中直接触发异常。
void btn_MouseLeftButtonDown(object sender, MouseEventArgs e)
{
try
{
throw new Exception("Generate a Error!");
}
catch(Exception ex)
{
//TextBlock用于显示异常信息
Msg.Text = ex.Message;
}
}
}
}
这段代码运行时,显示的效果如图所示。
可以像在其他.NET项目一样处理异常,或者是定义自己的异常处理器类,结合XAML图形元素和动画技术,为使用者提供有醒目的提示。