Method: Exception#backtrace_locations
- Defined in:
- error.c
#backtrace_locations ⇒ Array?
Returns the backtrace (the list of code locations that led to the exception), as an array of Thread::Backtrace::Location instances.
Example (assuming the code is stored in the file named t.rb
):
def division(numerator, denominator)
numerator / denominator
end
begin
division(1, 0)
rescue => ex
p ex.backtrace_locations
# ["t.rb:2:in 'Integer#/'", "t.rb:2:in 'Object#division'", "t.rb:6:in '<main>'"]
loc = ex.backtrace_locations.first
p loc.class
# Thread::Backtrace::Location
p loc.path
# "t.rb"
p loc.lineno
# 2
p loc.label
# "Integer#/"
end
The value returned by this method might be adjusted when raising (see Kernel#raise), or during intermediate handling by #set_backtrace.
See also #backtrace that provide the same value as an array of strings. (Note though that two values might not be consistent with each other when backtraces are manually adjusted.)
See Backtraces.
1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 |
# File 'error.c', line 1972
static VALUE
exc_backtrace_locations(VALUE exc)
{
VALUE obj;
obj = rb_attr_get(exc, id_bt_locations);
if (!NIL_P(obj)) {
obj = rb_backtrace_to_location_ary(obj);
}
return obj;
}
|