Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

throwAsCaller

引发异常,如同发生在调用函数内

说明

示例

throwAsCaller(exception) 引发异常,如同发生在调用函数内。异常会终止当前正在运行的函数并将控制权交回给键盘或所在的 catch 块。从 try/catch 语句外部引发异常时,MATLAB® 将错误消息显示在命令行窗口中。

可以通过 try/catch 语句或 MException.last 函数访问 MException 对象。

有时,较之指向实际引发异常的函数,指向导致异常的调用函数中的位置可提供更多有关错误的信息。可以使用 throwAsCaller 简化错误显示。

示例

全部折叠

在您的工作文件夹中创建一个函数 sayHello

function sayHello(N)
checkInput(N)
str = ['Hello, ' N '!'];
disp(str)

function checkInput(N)
if ~ischar(N)
    ME = MException('sayHello:inputError','Input must be char.');
    throw(ME)
end

在命令提示符处调用该函数并带一个数值输入。

sayHello(42)
Error using sayHello>checkInput (line 9)
Input must be char.

Error in sayHello (line 2)
checkInput(N)

堆栈顶部是指第 9 行,因为这是 MATLAB 引发异常的位置。在初始堆栈帧后,MATLAB 显示来自调用函数的信息。

sayHello.m 的第 9 行将 throw(ME) 替换为 throwAsCaller(ME),并重新调用该函数。

sayHello(42)
Error using sayHello (line 2)
Input must be char.

堆栈顶部指向第 2 行,因为这是调用函数中出现错误的位置。

输入参数

全部折叠

包含错误的原因和位置的异常,指定为标量 MException 对象。

在 R2007b 中推出