Why does the Code Analyzer flag this as an error?

8 ビュー (過去 30 日間)
Matt J
Matt J 2025 年 2 月 26 日
コメント済み: dpb 2025 年 3 月 6 日
Why does the Code Analyzer flag this code as an error? It runs fine:
try
error("It's bad")
catch ME
warning('Error in code: %s', ME.message);
end
Warning: Error in code: It's bad

採用された回答

Matt J
Matt J 2025 年 3 月 6 日
Mathworks Support has classified it as a bug.
  1 件のコメント
dpb
dpb 2025 年 3 月 6 日
That's pretty-much what my conclusion was although I said mlint was too picky... :)

サインインしてコメントする。

その他の回答 (1 件)

dpb
dpb 2025 年 2 月 27 日
移動済み: dpb 2025 年 2 月 27 日
Having warning() inside the catch clause is the problem -- the catch clause is executed only when an error condition exists and mixing that up with trying to issue a warning is sorta' like double jeopardy and mlint doesn't like it...
Just output any additional message with disp or fprintf, don't try to throw a warning there...
try
error("It's bad")
catch ME
fprintf('Error in code: \n%s\n',ME.message);
end
shows no error or warning.
  2 件のコメント
Matt J
Matt J 2025 年 2 月 27 日
編集済み: Matt J 2025 年 2 月 27 日
That does make a certain amount of sense, but the explanation given by the Code Analyzer doesn't resemble that:
dpb
dpb 2025 年 2 月 27 日
編集済み: dpb 2025 年 2 月 27 日
Yeah, @Matt J, I thought about addressing that but decided to not touch it. :)
The suggested solution doesn't work(*) when the warning is inside the catch block, either...I believe the authors of mlint never thought of nor tested the case.
It's probably worth an enhancement/bug report...
(*) Actually, on further exploration using the other format string argument does convert the mlint error into a warning although it may take moving around in the file some first before the red line is replaced by the orange one. You then get a warning that the number of output items may not match the format specification. Either way, there isn't an actual syntax error in the warning statement per se, just a picky mlint false positive, I think.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

製品


リリース

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by