-
Notifications
You must be signed in to change notification settings - Fork 252
/
Copy patheeglab_error.m
88 lines (85 loc) · 3.86 KB
/
eeglab_error.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
% EEGLAB_ERROR - generate an eeglab error.
%
% Usage: >> eeglab_error;
%
% Inputs: none, simply capture the last error generated.
%
% Author: Arnaud Delorme, SCCN, INC, UCSD, 2006-
%
% see also: EEGLAB
% Copyright (C) 2006 Arnaud Delorme, Salk Institute, arno@salk.edu
%
% This file is part of EEGLAB, see http://www.eeglab.org
% for the documentation and details.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions are met:
%
% 1. Redistributions of source code must retain the above copyright notice,
% this list of conditions and the following disclaimer.
%
% 2. Redistributions in binary form must reproduce the above copyright notice,
% this list of conditions and the following disclaimer in the documentation
% and/or other materials provided with the distribution.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
% THE POSSIBILITY OF SUCH DAMAGE.
function eeglab_error()
% handling errors
% ----------------
tmplasterr = lasterr;
[iseeglaberror tmplasterr header] = testeeglaberror(tmplasterr);
ft_error = false;
if iseeglaberror
tmp = lasterror; % Add more information to eeglab errors JRI, RMC
if ~isempty(tmp.stack)
tmplasterr = sprintf('%s,\n\nThis is not a bug (Error occurred in function %s() at line %d)',...
tmplasterr, tmp.stack(1).name, tmp.stack(1).line);
else
tmplasterr = sprintf('%s,\n', tmplasterr);
end
errordlg2(tmplasterr, header);
else
try
tmp = lasterror;
if length(tmp.stack(1).name) && all(tmp.stack(1).name(1:3) == 'ft_')
ft_error = true;
end
tmperr = [ 'EEGLAB error in function ' tmp.stack(1).name '() at line ' int2str(tmp.stack(1).line) ':' 10 10 lasterr ];
catch % Matlab 5 and when the stack is empty
tmperr = [ 'EEGLAB error:' 10 10 tmplasterr ];
end
if ~ft_error
tmperr = [ tmperr 10 10 'If you think this is a bug, please submit a detailed ' 10 ...
'description of how to reproduce the problem (and upload' 10 ...
'a small dataset) at https://github.com/sccn/eeglab/issues' ];
else
tmperr = [ tmperr 10 10 'This is a problem with FIELDTRIP. The Fieldtrip version you downloaded' 10 ...
'is corrupted. Please manually replace Fieldtrip with an earlier version' 10 ...
'and/or email the Fieldtrip developers so they can fix the issue.' ];
end
errordlg2(tmperr, header);
end
function [ val str header ] = testeeglaberror(str)
header = 'EEGLAB error';
val = 0;
try,
if strcmp(str(1:5), 'Error'),
val = 1;
str = str(12:end); %Corrected extraction of function name, occurs after 'Error using ' JRI, RMC
indendofline = find(str == 10);
funcname = str(1:indendofline(1)-1);
str = str(indendofline(1)+1:end);
header = [ funcname ' error' ];
end
catch
end