我在PL/SQL
和错误的事件有几个嵌套块我只想在通过重新最顶层处理错误在每个嵌套级别抛出它。每当我重新抛出(RAISE
)异常在内部块的问题,DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
复位堆到的点,其中的例外是最后升高(这是在途中对顶层嵌套块中的一个)。我无法找到从最初发生异常的地方开始完整堆栈跟踪的方式。任何想法如何获得完整的堆栈跟踪,除了重新投入中间块之前的日志记录?获得在PL/SQL重新抛出异常完整的堆栈跟踪(从点异常起源)
1
A
回答
1
我看到你正在尝试做的,和我一起ivanzg,这是没有必要同意 - 在顶级处理器可以向下回溯整个所谓的烟囱的程序和错误的路线。
raise语句是你在做什么杀手。只要你这样做,你就失去了真正的错误地点。
0
实际上,要获得完整的调用堆栈,请使用DBMS_UTILITY.FORMAT_CALL_STACK()和DBMS_UTILITY.FORMAT_ERROR_BACKTRACE()的组合。 FORMAT_CALL_STACK将向顶层调用显示错误处理程序,并且FORMAT_ERROR_BACKTRACE将从错误处理程序直至错误过程和代码行(准确地)显示。
与FORMAT_CALL_STACK唯一的缺点是,行号不一定是你所期望的 - 他们指出你的错误处理程序。
相关问题
- 1. 在Silverlight中重新抛出异常时保留堆栈跟踪
- 2. 重新抛出任务异常(TPL)失去堆栈跟踪
- 3. 异常堆栈跟踪
- 4. 异常和堆栈跟踪
- 5. 如何获得在.NET抛出异常的堆栈跟踪行号(S)现身
- 6. 在PHP中重新抛出异常是否破坏堆栈跟踪?
- 7. PDB:处于控制台时的异常 - 完整堆栈跟踪
- 8. 异常(堆栈跟踪)在一行
- 9. C#重新抛出异常:如何在IDE中获取异常堆栈?
- 10. 使用自定义堆栈跟踪抛出异常
- 11. ELMAH不存储堆栈跟踪当Facebook C#SDK抛出异常
- 12. 抛出异常,但坚持堆栈跟踪
- 13. ASM ByteCode - 异常的堆栈跟踪
- 14. Struts“org.apache.struts.action.RequestProcessor - 抛出未处理的异常” - 如何获得完整的堆栈跟踪?
- 15. Java异常处理和堆栈跟踪
- 16. 打印堆栈跟踪元素异常
- 17. 如何从Python中的异常对象获取堆栈跟踪?
- 18. 获取完整的字符串堆栈跟踪,包括内部异常
- 19. ASP.NET:accessdb odbc - 获取异常时,如何查看完整的堆栈跟踪?
- 20. Javascript异常栈跟踪
- 21. 正在重复相同的异常堆栈跟踪
- 22. 抛出新的异常,同时保持堆栈跟踪和内部异常信息
- 23. C# - 创建新的异常而不丢失堆栈跟踪和内部异常?
- 24. Rails:记录异常的整个堆栈跟踪
- 25. 如何重新抛出JavaScript中的异常,但保留堆栈?
- 26. DllIImport函数抛出堆栈异常
- 27. 在Python中检索双重异常原始堆栈跟踪
- 28. 如何在VB中保留堆栈跟踪的同时抛出现有异常?
- 29. 没有堆栈跟踪的循环异常 - 如何重置?
- 30. 只有异常堆栈跟踪的最后一行出现
捕获并重新抛出异常复位错误堆栈到这一点,在那里再次上调。为什么要首先屏蔽异常,如果异常未在内部块中处理,它将自动传播到下一级/外部块,直到最高级别,并具有正确的错误和产生的线。 – ivanzg
记录中间块中的异常。 – fg78nc
再次说明,为什么如果您不处理中间块中的错误来捕捉它并重新提升它,那又有什么意义呢?异常会通过中间块自动传播,直至可以处理的最高级别。 – ivanzg