Erlang/OTP 21 で入る新しい文法

地味ですが大事な話。キラキラした話はこちらを読みましょう。

%% 今まで
try
...
catch
C:E ->
... = erlang:get_stacktrace(),
...
end
%% 今後
try
...
catch
C:E:Stack ->
...
end

erlang:get_stacktrace/0 知っていますか?知っていますよね。便利ですよね、スタックが取れて。

ただ、このコードそもそも try/catch 前提なんですよね。例外を補足する機能なので。

であれば、もう erlang:get_stacktrace/0 は文法に入れ込んでしまおう、というお話です。

C:E を C:E:Stack にする、これだけです。これだけですが大問題です。なんと OTP 21 からしかこの文法は使えません。

つまり OTP 20 と 21 で分岐する変更が必要になります。jsone の作者がお手本のような対応をしていたので、参考にしましょう。

OTP 21 で erlang;get_stactrace/0 は depreacated です。まぁもう使うなという認識で構いません。

OTP 21 が出たら erlang:get_stacktrace/0 は使わずに C:E:Stack を使うように仕様というお話でした。

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store