0001 function edl_logerror(caller, err, logger, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 if nargin < 3
0027 raise_lackinput('edl_logerror', 3);
0028 end
0029
0030 opts.header = true;
0031 opts.message = true;
0032 opts.stack = true;
0033 opts = slparseprops(opts, varargin{:});
0034
0035
0036
0037
0038
0039
0040
0041 if opts.header
0042 if isempty(err.identifier)
0043 write(logger, '%s catch error:', caller);
0044 else
0045 write(logger, '%s catch error: %s:', caller, err.identifier);
0046 end
0047 end
0048
0049
0050
0051 if opts.message
0052 msglines = slstrsplit(err.message, sprintf('\r\n'));
0053 nmlines = length(msglines);
0054 for i = 1 : nmlines
0055 writeinfo(logger, '%s', msglines{i});
0056 end
0057 writeblank(logger);
0058 end
0059
0060
0061
0062 if opts.stack
0063 if ~isempty(err.stack)
0064 es = err.stack;
0065 writeinfo(logger, 'Runtime Stack:');
0066 ns = length(es);
0067 logger = incindent(logger, 1);
0068 for k = 1 : ns
0069 if ~isempty(es(k).file)
0070 writeinfo(logger, '%s ==> (%d at %s)', es(k).name, es(k).line, es(k).file);
0071 else
0072 writeinfo(logger, '%s ==> (%d)', es(k).name, es(k).line);
0073 end
0074 end
0075 end
0076 writeblank(logger);
0077 end
0078