MATLAB Answers

How to put script on pause instead of quitting when encountering error

23 views (last 30 days)
I am trying annotate several genomes. So I made a script that first predicts open reading frames and then BLAST-searches those against remote protein database. But I have a problem each time there is smth wrong with connection. In this case the script just quits because of the 'lost connection' error. Is there any option that if the script faces an error, it pauses the whole thing and continues shortly after rather than quitting completely?

Accepted Answer

Guillaume
Guillaume on 10 Mar 2015
Use a try catch block inside a while loop to catch the error and attempt the reconnection. Something like
notconnected = true;
while notconnected
try
connect(); %replace with whatever code you use to connect
%if connect throws an error, the following won't be executed and
%notconnected will stay true
notconnected = false;
catch
%connection failed
pause(2); %wait a little while before trying again
end
end %unless connect succeeded and notconnected is alse try to connect again

More Answers (1)

Giorgos Papakonstantinou
Giorgos Papakonstantinou on 10 Mar 2015
Edited: Giorgos Papakonstantinou on 10 Mar 2015
Ekaterina, as far as I know you, could enclose the part of the code, which tries to establish a connection within a try, catch statement.
For example lets say you want to establish a connection to the Matlab central answers.
What you could do is this:
ii=0;
while ii<10
try
A = urlread('http://www.mathworks.com/matlabcentral/ans/');
end
ii = ii+1;
end
Here I have intentionally given a false url and therefore the variable A will not exist. Matlab would complain if I had not enclosed the urlread command in a try, catch statement and would have thrown an error.
Error using urlreadwrite (line 88)
The server did not find a resource to match this request.
Error in urlread (line 36)
[s,status] = urlreadwrite(mfilename,catchErrors,url,varargin{:});
You can also modify your while condition for example:
while isempty(A)
assuming that prior the while loop you have issued:
A = [];

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!