print_info.m: Fix bug in error handling

get_error_message.m needs to always provide the error string, only throwing out the error message needs to depend on noprint

Closes https://git.dynare.org/Dynare/dynare/issues/1714
time-shift
Johannes Pfeifer 2020-03-07 18:34:42 +01:00
parent debae9c46f
commit b7ef2181f9
4 changed files with 149 additions and 151 deletions

View File

@ -461,7 +461,7 @@ if iload <=0
identification_analysis(params, indpmodel, indpstderr, indpcorr, options_ident, dataset_info, prior_exist, 1); %the 1 at the end implies initialization of persistent variables identification_analysis(params, indpmodel, indpstderr, indpcorr, options_ident, dataset_info, prior_exist, 1); %the 1 at the end implies initialization of persistent variables
if info(1)~=0 if info(1)~=0
% there are errors in the solution algorithm % there are errors in the solution algorithm
message = get_error_message(info,0,options_); message = get_error_message(info,options_);
fprintf('-----------\n'); fprintf('-----------\n');
fprintf('The model does not solve for %s (info = %d: %s)\n', parameters, info(1), message); fprintf('The model does not solve for %s (info = %d: %s)\n', parameters, info(1), message);
fprintf('-----------\n'); fprintf('-----------\n');

View File

@ -59,7 +59,7 @@ function disp_info_error_identification_perturbation(info,j)
% there are errors in the solution algorithm % there are errors in the solution algorithm
probl_par = get_the_name(j,varargin{5}.TeX,varargin{3},varargin{2},varargin{5}); probl_par = get_the_name(j,varargin{5}.TeX,varargin{3},varargin{2},varargin{5});
skipline() skipline()
message = get_error_message(info,0,varargin{5}); message = get_error_message(info,varargin{5});
fprintf('Parameter error in numerical two-sided difference method:\n') fprintf('Parameter error in numerical two-sided difference method:\n')
fprintf('Cannot solve the model for %s (info = %d, %s)\n', probl_par, info(1), message); fprintf('Cannot solve the model for %s (info = %d, %s)\n', probl_par, info(1), message);
fprintf('Possible solutions:\n') fprintf('Possible solutions:\n')

View File

@ -1,9 +1,8 @@
function message = get_error_message(info, noprint, DynareOptions) function message = get_error_message(info, DynareOptions)
% Returns error messages % Returns error messages
% %
% INPUTS % INPUTS
% info [double] vector returned by resol.m % info [double] vector returned by resol.m
% noprint [integer] equal to 0 if the error message has to be printed.
% DynareOptions [structure] --> options_ % DynareOptions [structure] --> options_
% OUTPUTS % OUTPUTS
% message [string] corresponding error message % message [string] corresponding error message
@ -11,7 +10,7 @@ function message = get_error_message(info, noprint, DynareOptions)
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% none % none
% Copyright (C) 2005-2019 Dynare Team % Copyright (C) 2005-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -28,7 +27,6 @@ function message = get_error_message(info, noprint, DynareOptions)
% You should have received a copy of the GNU General Public License % You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>. % along with Dynare. If not, see <http://www.gnu.org/licenses/>.
if ~noprint
switch info(1) switch info(1)
case 0 case 0
message = ''; message = '';
@ -171,4 +169,3 @@ if ~noprint
otherwise otherwise
message = 'This case shouldn''t happen. Contact the authors of Dynare'; message = 'This case shouldn''t happen. Contact the authors of Dynare';
end end
end

View File

@ -11,7 +11,7 @@ function print_info(info, noprint, DynareOptions)
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% none % none
% Copyright (C) 2005-2019 Dynare Team % Copyright (C) 2005-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -27,6 +27,7 @@ function print_info(info, noprint, DynareOptions)
% %
% You should have received a copy of the GNU General Public License % You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>. % along with Dynare. If not, see <http://www.gnu.org/licenses/>.
if ~noprint
message = get_error_message(info, noprint, DynareOptions); message = get_error_message(info, DynareOptions);
error(message); error(message);
end