在本文中,我们将详细介绍错误处理程序Servlet:如何获取异常原因的各个方面,并为您提供关于出错处理程序的相关解答,同时,我们也将为您带来关于ASP.Net:如何从内容页面事件处理程序调用主页面事件
在本文中,我们将详细介绍错误处理程序Servlet:如何获取异常原因的各个方面,并为您提供关于出错处理程序的相关解答,同时,我们也将为您带来关于ASP.Net:如何从内容页面事件处理程序调用主页面事件处理程序?、ASP.NET:如何从通用处理程序获取文件的虚拟路径?、C++ 技术中的异常处理:如何使用异常对象来获取异常详细信息?、html – JSP / Servlet HTTP 404错误处理的有用知识。
本文目录一览:- 错误处理程序Servlet:如何获取异常原因(出错处理程序)
- ASP.Net:如何从内容页面事件处理程序调用主页面事件处理程序?
- ASP.NET:如何从通用处理程序获取文件的虚拟路径?
- C++ 技术中的异常处理:如何使用异常对象来获取异常详细信息?
- html – JSP / Servlet HTTP 404错误处理
错误处理程序Servlet:如何获取异常原因(出错处理程序)
我在web.xml中配置了一个错误servlet:
<error-page> <exception-type>java.lang.Exception</exception-type> <location>/ExceptionHandler</location></error-page>
对?
在我的(通常)servlet中:
doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { ... ... } catch (Exception e) { throw new ServletException("some mesage", e); }}
因此,在这种情况下,“ e”将是根本原因。
在我的ExceptionHandler类中,我有:
doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception"); throwable.getCause() //NULL}
这就是问题。throwable.getCause()为null。
答案1
小编典典如果由servletcontainer捕捉到的异常是ServletException
和<error-page>
声明捕捉异常 其他
比ServletException
,那么它的原因实际上是打开并作为存储"javax.servlet.error.exception"
。因此,您基本上已经将其作为throwable
变量,并且不需要调用getCause()
它。
另请参阅Servlet
2.5规范第9.9.2章的第5段:
如果没有使用类层次结构匹配的
error-page
包含声明的声明exception-type
,并且抛出的异常是其ServletException
子类或子类,
则容器将提取ServletException.getRootCause
方法定义 的包装后的异常
。对错误页面声明进行第二遍处理,再次尝试与错误页面声明进行匹配,但改用包装的异常。
顺便说一句,最好使用RequestDispatcher#ERROR_EXCEPTION
常量而不是对其进行硬编码。
Throwable throwable = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
ASP.Net:如何从内容页面事件处理程序调用主页面事件处理程序?
我已经研究过,如果Master页面想要在Content页面中调用事件处理程序,似乎有很多…
任何inout将受到高度赞赏.
谢谢
解决方法
public void LinkButton1_Click(object sender,EventArgs e) { //Do Stuff Here }
在您的内容页面中使用主类型指令
<%@ MasterType VirtualPath="~/masters/SourcePage.master"" %>
在内容页面的代码中,调用Master事件处理程序,如下所示
protected void ImageButton1_Click(object sender,ImageClickEventArgs e) { this.Master.LinkButton1_Click(sender,e); }
注意代码是C#.
我正在寻找更直接地调用母版页事件处理程序
ASP.NET:如何从通用处理程序获取文件的虚拟路径?
例如我想转换:
~/asp/ClockState.aspx
成
/NextAllowed/asp/ClockState.aspx
如果我是WebForm页面,我可以调用ResolveUrl:
Page.ResolveUrl("~/asp/ClockState.aspx")
解析为:
/NextAllowed/asp/ClockState.aspx
但我不是WebForm页面,我是一个通用的处理程序.你知道,IHttpHandler对象注入了各种各样的东西:
public class ResetClock : IHttpHandler { public void ProcessRequest (HttpContext context) { //[process stuff] //Redirect client context.Response.Redirect("~/asp/ClockState.aspx",true); } public bool IsReusable { get { return false; } } }
解决方法
var path = VirtualPathUtility.ToAbsolute("~/asp/ClockState.aspx");
但是,您仍然可以在Response.Redirect调用中使用代字号,因此以下内容仍然有效:
Response.Redirect("~/asp/ClockState.aspx");
在使用Response.Redirect之前,您无需将URL转换为绝对路径.
C++ 技术中的异常处理:如何使用异常对象来获取异常详细信息?
C++ 中的异常处理:揭秘获取异常详细信息的异常对象
异常处理在 C++ 中扮演着至关重要的角色,它帮助开发者处理并从代码运行中的错误状况中恢复。异常对象允许你获取有关异常极其原因的详细信息,从而让你能够实现更健壮的错误处理机制。
获取异常信息
立即学习“C++免费学习笔记(深入)”;
要获取有关异常的详细信息,你可以使用以下成员函数:
- what():返回描述异常原因的文本消息。
- name():返回抛出的异常类型的名称。
实战案例
考虑以下代码段,它演示了如何使用异常对象来获取异常详细信息:
#include <iostream> #include <stdexcept> using namespace std; int main() { try { // 可能会抛出异常的代码... } catch (const exception &e) { cout << "异常类型:" << e.name() << endl; cout << "异常消息:" << e.what() << endl; } return 0; }
输出:
异常类型:runtime_error 异常消息:未知的错误
在这个例子中,如果代码块抛出了异常,异常对象 e 将捕获该异常。我们可以使用 e.name() 和 e.what() 函数分别获取异常类型和异常消息。
自定义异常
你还可以创建自定义异常,提供更具体的信息。这样做,你需要创建派生自 std::exception 的新类。
class MyCustomException : public exception { public: MyCustomException(const string &message) : exception(message) {} };
要抛出自定义异常,你可以使用 throw 关键字,后面跟着自定义异常对象:
throw MyCustomException("我的自定义异常消息");
结论
通过使用异常对象的 name() 和 what() 成员函数,你可以获取有关 C++ 中异常的详细信息。这使你能够实现更健壮的错误处理并提供更有用的错误消息,从而提高应用程序的可靠性和用户体验。
以上就是C++ 技术中的异常处理:如何使用异常对象来获取异常详细信息?的详细内容,更多请关注php中文网其它相关文章!
html – JSP / Servlet HTTP 404错误处理
我可以这样写:
<error-page> <error-code>404</error-code> <location>/view/error404.jsp</location> </error-page>
这很好用,但我想记录用户输入的每个无效网址.
当我在error404.jsp中使用scriptlet时,如下所示:
<% System.out.println(request.getRequestURL()); %>
我总是得到:http://localhost:8080/webApp/view/error.jsp,因为用户将从无效的URL转发到我的error404.jsp.
我该如何获取无效的网址?或者我应该如何编写一个servlet来捕获其他servlet未明确处理的所有请求?
解决方法
<p>URL: ${requestScope['javax.servlet.forward.request_uri']}</p>
或者,如果您仍然使用已经在十年前升级的旧版JSP 1.x,那么请执行以下操作:
<p>URL: <%= request.getAttribute("javax.servlet.forward.request_uri"); %></p>
今天关于错误处理程序Servlet:如何获取异常原因和出错处理程序的介绍到此结束,谢谢您的阅读,有关ASP.Net:如何从内容页面事件处理程序调用主页面事件处理程序?、ASP.NET:如何从通用处理程序获取文件的虚拟路径?、C++ 技术中的异常处理:如何使用异常对象来获取异常详细信息?、html – JSP / Servlet HTTP 404错误处理等更多相关知识的信息可以在本站进行查询。
本文标签: