Class: Babeltrace2::BTError

Inherits:
BTObject show all
Defined in:
lib/babeltrace2/error-reporting.rb,
lib/babeltrace2/error-reporting.rb,
lib/babeltrace2/error-reporting.rb

Defined Under Namespace

Classes: Cause

Instance Attribute Summary

Attributes inherited from BTObject

#handle

Instance Method Summary collapse

Methods inherited from BTObject

#==, #initialize, #to_ptr

Constructor Details

This class inherits a constructor from Babeltrace2::BTObject

Instance Method Details

#causesObject



316
317
318
319
320
321
# File 'lib/babeltrace2/error-reporting.rb', line 316

def causes
  get_cause_count.times.collect { |i|
    ref = Babeltrace2.bt_error_borrow_cause_by_index(@handle, i)
    Cause.new(ref)
  }
end

#exception_paramsObject



343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
# File 'lib/babeltrace2/error-reporting.rb', line 343

def exception_params()
  klass = nil
  message = nil
  backtrace = []
  cs = causes
  return [klass, message, backtrace] if cs.empty?
  c = cs.first
  mess = c.message
  m = mess.match(/ ::(.*?): (.*)/m)
  if m
    klass = m[1]
    message = m[2]
    mess.sub!( m[0], "" )
  end
  item = ""
  item << c.file_name << ":"
  item << c.line_number.to_s
  item << (mess.match(/:in /) ? mess : Babeltrace2.verbose? ? " :: " << mess : ".")
  backtrace.push(item)
  cs[1..-1].each { |c|
    item = ""
    item << c.file_name << ":"
    item << c.line_number.to_s
    mess = c.message
    item << (mess.match(/:in /) ? mess : Babeltrace2.verbose? ? " :: " << mess : ".")
    backtrace.push(item)
  }
  [klass, message, backtrace]
end

#get_cause_by_index(indx) ⇒ Object



310
311
312
313
314
# File 'lib/babeltrace2/error-reporting.rb', line 310

def get_cause_by_index(indx)
  return nil unless indx < get_cause_count
  ref = Babeltrace2.bt_error_borrow_cause_by_index(@handle, indx)
  Cause.new(ref)
end

#get_cause_countObject Also known as: cause_count

Raises:



304
305
306
307
# File 'lib/babeltrace2/error-reporting.rb', line 304

def get_cause_count
  raise Error.new("Error already released") unless @handle
  Babeltrace2.bt_error_get_cause_count(@handle)
end

#releaseObject

Raises:



323
324
325
326
327
# File 'lib/babeltrace2/error-reporting.rb', line 323

def release
  raise Error.new("Error already released") unless @handle
  Babeltrace2.bt_error_release(@handle)
  @handle = nil
end

#to_sObject



329
330
331
332
333
334
335
336
337
338
339
340
341
# File 'lib/babeltrace2/error-reporting.rb', line 329

def to_s
  str = ""
  causes.each { |c|
    file_name = c.file_name
    line_number = c.line_number
    str << file_name << ":" if file_name
    str << line_number.to_s << ":" if line_number
    str << " "
    str << c.message
    str << "\n"
  }
  str
end