例:
"3%0"!; // 发生“除以0错误”的异常
try
(尝试) 关键字和 catch
(捕捉) 关键字,可以捕捉异常。例:
try // 不知道是否会发生异常
{
func1(); // 这里有可能会发生异常
}
catch // 捕捉异常
{
// 当发生异常的时候,这里的代码被执行
inform("无法读取图像。"); // 显示信息
}
例:
try
{
loadImages("nothing.jpeg"); // 可能会发生异常的操作
}
catch (e) // 利用 e 这个变量获取异常对象
{
// e.message 是和异常一起投出的消息字符串。
// 一些情况下发生异常的理由会通过这个变量说明。
inform("无法读取图像。\n"+e.message);
}
throw
关键字投出异常。例:
function pow2(n)
{
// 计算 2 的 n 次幂,提供的 n 必须是正整数
if(n<0) throw new Exception("不能指定负数。");
// ↑ 发生异常
return 1<<n;
}
throw new Exception("不能指定负数。");
new Exception("不能指定负数。")
这个语句将以字符串作为参数创建一个新的 Exception 类对象(详细请参考 Exception 类的说明)。然后将这个新创建的对象通过 throw 关键字投出。例:
function tryloadimage()
{
try
{
primaryLayer.loadImages("test1.bmp"); // 尝试读取test1.bmp
}
catch(e)
{
inform("图像读取失败。");
throw e; // 上面的信息被显示的同时,异常会被再次投出
}
}
function test()
{
// 调用 tryloadimage ,如果读取图像成功则返回 true
// 否则返回 false 的函数
try
{
tryloadimage();
}
catch
{
return false;
}
return true;
}