Без java.io.*
это можно сделать так.
String trace = e.toString() + "\n";
for (StackTraceElement e1 : e.getStackTrace()) {
trace += "\t at " + e1.toString() + "\n";
}
И тогда переменная trace
содержит вашу трассировку стека. Выходные данные также содержат начальную причину, выходные данные идентичны printStackTrace()
Пример, printStackTrace()
приводит к:
java.io.FileNotFoundException: / (Is a directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
at Test.main(Test.java:9)
Строка trace
сохраняется, когда печатается в stdout
java.io.FileNotFoundException: / (Is a directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
at Test.main(Test.java:9)
Чтобы вызвать TrackViewState в настраиваемом StateBag, вы должны привести его к его интерфейсу.
StateBag mybag = new StateBag();
(mybag as IStateManager).TrackViewState();
Я предполагаю, что это дизайнерское решение было принято, чтобы скрыть реализацию ViewState от потребителей. На странице документации для IStateManager есть некоторая информация о реализации пользовательского отслеживания состояния.