假設我在控制臺中顯示了這個例外:
java.nio.file.DirectoryNotEmptyException。/遇到這樣的問題,我們應該怎么辦?
在java.base/sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:466)
at java.base/sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:267)
at java.base/java.nio.file.Files.move(Files.java:1421)
at class.method(class.java:158)
at class.method(class.java:234)
at class.method(class.java:23)
...
...
...更多行數...
我怎樣才能提取包括java.nio.file.DirectoryNotEmptyException的前N行。/path/here/directory?
我寫了這個來獲得前兩行:
我寫了這個來獲得前兩行。
String stackTrace = ";
if (error != null ) {
StackTraceElement[] stackTraceElements = error.getStackTrace()。
stackTrace = stackTraceElements[0].toString() stackTraceElements[1].toString()。
但這只產生了:
在java.base/sun.nio.fs.UnixCopyFile.move(UnixCopyFile. java:466)在java.base/sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:267)
在我的印象中,StackTraceElements[0]將是java.nio.file.DirectoryNotEmptyException。/path/here/directory,但它不是,我不知道如何獲得適當的N行來包括這個。
uj5u.com熱心網友回復:
列印例外也是:
public class Tracer
{
public static void main (String[] args)
{
Tracer app = new Tracer ()。
app.execute ();
}
private void execute ()
{
try ()
{
失敗(5)。
}
catch (Exception e)
{
StackTraceElement[] stackTraceElements = e.getStackTrace()。
StringBuilder builder = new StringBuilder()。
builder.append (e);
builder.append ("
")。)
for (int i = 0; i< 3; i )
{
builder.append (stackTraceElements[i].toString ())。
builder.append ("
")。)
}
System.out.println (builder);
}
}
private void failure (int n) throws Exception
{
if (n <= 0)
{
throw new Exception ("Exception message") 。
}
else; }
{
失敗(n - 1)。
}
}
uj5u.com熱心網友回復:
一個簡單的方法是將錯誤資訊與每個堆疊跟蹤條目的toString連接起來。使用Arrays.stream()和limit(N)來獲得堆疊跟蹤中所需要的條目數,將它們轉換為字串,并用行分隔符連接。
嘗試一下這個變體:
Exception ex = new Exception("File not found message") 。
int depth = 3;
String stackN = Arrays.stream(ex.getStackTrace() ) .limit(depth)
.map(String::valueOf)
//.map(s -> " at " s)
.collect(Collectors.join(System.lineSeparator()))。
String all = ex.toString() System.lineSeparator() stackN;
System.out.println(all)。
你可能想嘗試不同的格式或縮進(制表符/空格前綴等),這可以通過在流中插入額外的map步驟來實作,例如.map(s -> " " s)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/320004.html
標籤:
上一篇:在python中對矩陣進行轉置
