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
if info(1)~=0
% there are errors in the solution algorithm
message = get_error_message(info,0,options_);
message = get_error_message(info,options_);
fprintf('-----------\n');
fprintf('The model does not solve for %s (info = %d: %s)\n', parameters, info(1), message);
fprintf('-----------\n');

View File

@ -59,7 +59,7 @@ function disp_info_error_identification_perturbation(info,j)
% there are errors in the solution algorithm
probl_par = get_the_name(j,varargin{5}.TeX,varargin{3},varargin{2},varargin{5});
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('Cannot solve the model for %s (info = %d, %s)\n', probl_par, info(1), message);
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
%
% INPUTS
% info [double] vector returned by resol.m
% noprint [integer] equal to 0 if the error message has to be printed.
% DynareOptions [structure] --> options_
% OUTPUTS
% message [string] corresponding error message
@ -11,7 +10,7 @@ function message = get_error_message(info, noprint, DynareOptions)
% SPECIAL REQUIREMENTS
% none
% Copyright (C) 2005-2019 Dynare Team
% Copyright (C) 2005-2020 Dynare Team
%
% This file is part of Dynare.
%
@ -28,8 +27,7 @@ function message = get_error_message(info, noprint, DynareOptions)
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
if ~noprint
switch info(1)
switch info(1)
case 0
message = '';
case 1
@ -170,5 +168,4 @@ if ~noprint
message = 'Aim: Problem in SPEIG.';
otherwise
message = 'This case shouldn''t happen. Contact the authors of Dynare';
end
end

View File

@ -11,7 +11,7 @@ function print_info(info, noprint, DynareOptions)
% SPECIAL REQUIREMENTS
% none
% Copyright (C) 2005-2019 Dynare Team
% Copyright (C) 2005-2020 Dynare Team
%
% 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
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
message = get_error_message(info, noprint, DynareOptions);
error(message);
if ~noprint
message = get_error_message(info, DynareOptions);
error(message);
end