Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
SignalException.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* SignalException.cc (C) 2000-2016 */
9/* */
10/* Exception when a signal occurs. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/ArcanePrecomp.h"
15
16#include "arcane/utils/Iostream.h"
17#include "arcane/utils/SignalException.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28SignalException::
29SignalException(const String& where, eSignalType st, int signal_number)
30: Exception("Signal", where)
31, m_signal_type(st)
32, m_signal_number(signal_number)
33{
34}
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
39SignalException::
40SignalException(const String& where, const StackTrace& stack_trace,
41 eSignalType st, int signal_number)
42: Exception("Signal", where, stack_trace)
43, m_signal_type(st)
44, m_signal_number(signal_number)
45{
46}
47
48/*---------------------------------------------------------------------------*/
49/*---------------------------------------------------------------------------*/
50
51SignalException::
52SignalException(const SignalException& ex)
53: Exception(ex)
54, m_message(ex.m_message)
55, m_signal_type(ex.m_signal_type)
56, m_signal_number(ex.m_signal_number)
57{
58}
59
60/*---------------------------------------------------------------------------*/
61/*---------------------------------------------------------------------------*/
62
63void SignalException::
64explain(std::ostream& m) const
65{
66 if (!m_message.null())
67 m << "Message: " << m_message << '\n';
68
69 m << "A fatal signal has occurred: ";
70 switch (m_signal_type) {
71 case ST_FloatingException:
72 m << "Floating Exception";
73 break;
74 case ST_SegmentationFault:
75 m << "Segmentation Violation";
76 break;
77 case ST_BusError:
78 m << "Bus Error";
79 break;
80 case ST_Alarm:
81 m << "Sigalarm";
82 break;
83 case ST_Unknown:
84 m << "Unknown";
85 break;
86 }
87 m << " (signal number is: " << m_signal_number << ")\n";
88}
89
90/*---------------------------------------------------------------------------*/
91/*---------------------------------------------------------------------------*/
92
93SignalException::eSignalType SignalException::
94signalType() const
95{
96 return m_signal_type;
97}
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102int SignalException::
103signalNumber() const
104{
105 return m_signal_number;
106}
107
108/*---------------------------------------------------------------------------*/
109/*---------------------------------------------------------------------------*/
110
111} // namespace Arcane
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --