%% %% %CopyrightBegin% %% %% Copyright Ericsson AB 2003-2009. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. %% You may obtain a copy of the License at %% %% http://www.apache.org/licenses/LICENSE-2.0 %% %% Unless required by applicable law or agreed to in writing, software %% distributed under the License is distributed on an "AS IS" BASIS, %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %% See the License for the specific language governing permissions and %% limitations under the License. %% %% %CopyrightEnd% %% -module(catch_in_catch). -export([?MODULE/0,do_start/1]). ?MODULE() -> process_flag(trap_exit, true), Pid = spawn_link(?MODULE, do_start, [x]), receive {'EXIT',Pid,good_exit} -> ok; Other -> io:format("Unexpected: ~p\n", [Other]), error after 32000 -> io:format("No message received\n"), error end. do_start(Param) -> init(Param), exit(good_exit). init(Param) -> process_flag(trap_exit, true), %% The catches were improperly nested, causing a "No catch found" crash. (catch begin foo(Param), (catch exit(bar)) end ), ignore. foo(_) -> ok.