Throw Error in TimerFcn
5 views (last 30 days)
Show older comments
Commented: Sohil Shrestha on 8 Apr 2020
I want to throw an error when timer fires up .
timeout = timer('TimerFcn','error(''TIMEOUT OCCURED'');','StartDelay',0.01);
disp('Error is caught')
''' Do something else '''
Upon executing, I am getting
Error while evaluating TimerFcn for timer 'timer-47'
Steven Lord on 8 Apr 2020
Edited: Steven Lord on 8 Apr 2020
This is not going to work as you've written it.
Imagine if the timer's StartDelay was 60 seconds and the body of your try block took 5 seconds to run. Would MATLAB wait, twiddling its thumbs, for 55 seconds for the timer's delay to elapse and then jump into the catch block? No, it wouldn't. By the time the TimerFcn actually executes, the code that created and started the timer may have long since finished.
You could potentially get something like this to work as long as you're willing to have "Some Code" poll. Have the TimerFcn change a value stored somewhere accessible to the function (in the timer object's UserData, for example) and have "Some Code" periodically check if that stored value has changed. If it has, the body of the try has run for too long and "Some Code" should terminate.
Alternately, if you're willing to poll, you don't need a timer. Store the current time (as a datetime would be easist to check) at the start of "Some Code" and periodically check if the difference between the current time and stored time, terminating "Some Code" if it's been too long.
currentTime = datetime('now');
totalPause = 0;
r = rand;
disp("About to pause for " + r + " seconds.")
totalPause = totalPause + r;
if datetime('now')-currentTime > seconds(4.5)
disp("Paused for a total of " + totalPause + " seconds.")
More Answers (1)
Ameer Hamza on 8 Apr 2020
TimerFcn can either be a function handle or the name of a function. To display anything, you need to use a function. For example
timeout = timer('TimerFcn',@(~,~) disp('error(''This is error'');'),'StartDelay',0.01);
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!