Compatible with B4A, B4i and B4J
Returns a string similar to the error message that is logged when an exception happens.
You can show it for debug purposes or handle in other ways.
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Usage:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
			
			Returns a string similar to the error message that is logged when an exception happens.
You can show it for debug purposes or handle in other ways.
			
				B4X:
			
		
		
		Public Sub ExceptionToString(Exception As Object) As String
    #if b4i
    Dim sb As StringBuilder
    sb.Initialize
    sb.Append(Exception)
    Dim symbols As NativeObject
    If GetType(Exception) = "NSError" Then
        Dim Thread As NativeObject
        symbols = Thread.Initialize("NSThread").RunMethod("callStackSymbols", Null)
    Else If GetType(Exception) = "NSException" Then
        symbols = Exception.As(NativeObject).RunMethod("callStackSymbols", Null)
    End If
    If symbols.IsInitialized Then
        For Each symbol In symbols.As(List)
            sb.Append(CRLF).Append(symbol)
        Next
    End If
    Return sb.ToString
    #else if B4A or B4J
    Dim StringWriter As JavaObject
    StringWriter.InitializeNewInstance("java.io.StringWriter", Null)
    Dim PrintWriter As JavaObject
    PrintWriter.InitializeNewInstance("java.io.PrintWriter", Array(StringWriter))
    Exception.As(JavaObject).RunMethod("printStackTrace", Array(PrintWriter))
    Return StringWriter.RunMethod("toString", Null)
    #End If
End Sub
	Usage:
			
				B4X:
			
		
		
		Try
    Dim a(0) As Int
    a(10) = 34
Catch
    xui.MsgboxAsync(ExceptionToString(LastException), "")
    Log(LastException)
End Try