doc command doesn't work in try/catch blocks
显示 更早的评论
Hello,
I'm using the try/catch option. When I'm debugging the program and stop at a breakpoint, writing ' doc "function name" ' in the matlab command window causes a crash.
Is it a known bug?
Any way to resolve this issue?
Thanks,
Alex
[Edit: Moved more information from the answers - AU]
After further testing, it seems that the problem is somehow related to the function, but not its name or location. For now I wasn't able to reproduce the bug with other functions.
Below is the error I get:
??? Error: Unexpected MATLAB operator.
Error in ==> isClassMFile at 2 whichComment = regexp(evalc(helpUtils.makeDualCommand('which', fullPath)), '%.*', 'match', 'once');
Error in ==> splitClassInformation>resolveUnaryClass at 423 [isClassMFile, className] = helpUtils.isClassMFile(whichTopic);
Error in ==> splitClassInformation>unaryClassInformation at 401 [classInfo, whichTopic] = resolveUnaryClass(className, justChecking);
Error in ==> splitClassInformation>innerResolveImplicitPath at 128 [classInfo, whichTopic] = unaryClassInformation(objectParts, justChecking);
Error in ==> splitClassInformation>resolveImplicitPath at 104 [classInfo, whichTopic] = innerResolveImplicitPath(topic, implementor, justChecking);
Error in ==> splitClassInformation>innerSplitClassInformation at 44 [classInfo, whichTopic] = resolveImplicitPath(topic, implementor, justChecking);
Error in ==> splitClassInformation at 26 [classInfo, whichTopic, malformed] = innerSplitClassInformation(topic, implementor, justChecking, topicIsDotM);
Error in ==> doc>getClassInformation at 119 classInfo = helpUtils.splitClassInformation(topic, '', true, false);
Error in ==> doc at 88 [docTopic, isMethodOrProp] = getClassInformation(topic);
inside the function 'isClassMFile', first row, the function 'evalc' fails.
the output of: helpUtils.makeDualCommand('which', fullPath) is the line: which('C:\Program Files\MATLAB\R2010a\toolbox\matlab\iofun\sendmail.m')
and remarkably, when the path is the one for the function that causes problem, the output is: which(C:\Program Files\MATLAB\R2010a\toolbox\matlab\iofun\sendmail.m ) - the last comma is on a different line.
Any comment is welcome, Alex
1 个评论
Oleg Komarov
2011-7-11
http://www.mathworks.com/matlabcentral/answers/6200-tutorial-how-to-ask-a-question-on-answers-and-get-a-fast-answer
采纳的回答
更多回答(3 个)
Jan
2011-7-11
1 个投票
I cannot confirm this behaviour in Matlab 2009a 32bit, WinXP. Please post the Matlab and OS version you are using. And post an exact copy of the used command - I assume the double quotes are inserted for the posting only. And finally explain, what "crash" means, please. Di you get an error message, a wrong result or a crash dump?
2 个评论
Paulo Silva
2011-7-11
Jan my code doesn't work, is it a known bug? :)
Jan
2011-7-11
@Paulo: Yes, it is a none bug. But please define "code" and "my" with more details.
Sean de Wolski
2011-7-11
try
error
catch
doc randi
end
works for for me, R2009b Mac64bit.
Walter Roberson
2011-7-11
0 个投票
I wonder... what happens if you attempt to "doc" a .m file that has syntax errors? I don't think I've ever tried that.
3 个评论
Jan
2011-7-11
DOC uses HELP to extract the help text. HELP does not parse the contents of the M-file, but treats it as text file only and crops the initial commented block. Therefore syntax errors do not matter DOC.
But if the function WHICH is overloaded...
Alex Berkovich
2011-7-12
Friedrich
2011-7-12
You can overload "which" when you write your own function called "which" which is on the MATLAB path. Maybe try this is ML:
>> which -all which
built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\general\which)
C:\Program Files\MATLAB\R2011a\toolbox\simulink\simulink\@dependencies\which.p % dependencies method
>>
类别
在 帮助中心 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!