Mercurial Hosting > luan
comparison src/luan/LuanException.java @ 1125:442abdfff437
include luan stack in LuanException.printStackTrace()
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 24 Aug 2017 14:03:36 -0600 |
parents | e15be31cee92 |
children | 9fa8b8389578 |
comparison
equal
deleted
inserted
replaced
1124:ea7112e9eb1d | 1125:442abdfff437 |
---|---|
1 package luan; | 1 package luan; |
2 | 2 |
3 import java.io.StringWriter; | 3 import java.io.StringWriter; |
4 import java.io.PrintWriter; | 4 import java.io.PrintWriter; |
5 import java.io.PrintStream; | |
5 import java.util.List; | 6 import java.util.List; |
6 import java.util.ArrayList; | 7 import java.util.ArrayList; |
7 | 8 |
8 | 9 |
9 public final class LuanException extends Exception implements LuanCloneable { | 10 public final class LuanException extends Exception implements LuanCloneable { |
101 if( !method.equals("doCall") ) | 102 if( !method.equals("doCall") ) |
102 sb.append( " in function '" ).append( method.substring(1) ).append( "'" ); | 103 sb.append( " in function '" ).append( method.substring(1) ).append( "'" ); |
103 return sb.toString(); | 104 return sb.toString(); |
104 } | 105 } |
105 | 106 |
106 public String getLuanStackTraceString() { | 107 private StringBuilder luanStackTrace() { |
107 StringBuilder sb = new StringBuilder(); | 108 StringBuilder sb = new StringBuilder(); |
108 sb.append( getMessage() ); | 109 sb.append( getMessage() ); |
109 for( StackTraceElement ste : justLuan(getStackTrace()) ) { | 110 for( StackTraceElement ste : justLuan(getStackTrace()) ) { |
110 sb.append( "\n\t" ).append( toString(ste) ); | 111 sb.append( "\n\t" ).append( toString(ste) ); |
111 } | 112 } |
113 return sb; | |
114 } | |
115 | |
116 public String getLuanStackTraceString() { | |
117 StringBuilder sb = luanStackTrace(); | |
112 Throwable cause = getCause(); | 118 Throwable cause = getCause(); |
113 if( cause != null ) | 119 if( cause != null ) |
114 sb.append( "\nCaused by: " ).append( getJavaStackTraceString(cause) ); | 120 sb.append( "\nCaused by: " ).append( getJavaStackTraceString(cause) ); |
115 return sb.toString(); | 121 return sb.toString(); |
116 } | 122 } |
119 LuanException ex = new LuanException("currentSource"); | 125 LuanException ex = new LuanException("currentSource"); |
120 List<StackTraceElement> st = ex.justLuan(ex.getStackTrace()); | 126 List<StackTraceElement> st = ex.justLuan(ex.getStackTrace()); |
121 return st.isEmpty() ? null : st.get(0).getFileName(); | 127 return st.isEmpty() ? null : st.get(0).getFileName(); |
122 } | 128 } |
123 | 129 |
130 @Override public void printStackTrace(PrintStream s) { | |
131 s.print("Luan: "); | |
132 s.println(luanStackTrace()); | |
133 s.print("Caused by: "); | |
134 super.printStackTrace(s); | |
135 } | |
136 | |
137 @Override public void printStackTrace(PrintWriter s) { | |
138 s.print("Luan: "); | |
139 s.println(luanStackTrace()); | |
140 s.print("Caused by: "); | |
141 super.printStackTrace(s); | |
142 } | |
143 | |
124 } | 144 } |