GVKun编程网logo

错误处理程序Servlet:如何获取异常原因(出错处理程序)

5

在本文中,我们将详细介绍错误处理程序Servlet:如何获取异常原因的各个方面,并为您提供关于出错处理程序的相关解答,同时,我们也将为您带来关于ASP.Net:如何从内容页面事件处理程序调用主页面事件

在本文中,我们将详细介绍错误处理程序Servlet:如何获取异常原因的各个方面,并为您提供关于出错处理程序的相关解答,同时,我们也将为您带来关于ASP.Net:如何从内容页面事件处理程序调用主页面事件处理程序?、ASP.NET:如何从通用处理程序获取文件的虚拟路径?、C++ 技术中的异常处理:如何使用异常对象来获取异常详细信息?、html – JSP / Servlet HTTP 404错误处理的有用知识。

本文目录一览:

错误处理程序Servlet:如何获取异常原因(出错处理程序)

错误处理程序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:如何从内容页面事件处理程序调用主页面事件处理程序?

ASP.Net:如何从内容页面事件处理程序调用主页面事件处理程序?

我有一个母版页,我有一个链接按钮.在其中一个内容页面中,我需要隐藏链接按钮并替换为图像按钮.图像按钮的单击事件处理程序应该与母版页中链接按钮的单击事件完全相同.那么有没有办法从内容页面中的图像按钮单击事件处理程序调用主页面链接按钮单击事件处理程序?

我已经研究过,如果Master页面想要在Content页面中调用事件处理程序,似乎有很多…

任何inout将受到高度赞赏.

谢谢

解决方法

在您的母版页的代码后面,将事件处理程序上的protected关键字替换为public.
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.NET:如何从通用处理程序获取文件的虚拟路径?

如何在通用.ashx处理程序中将文件的虚拟路径解析为适合浏览器的路径?

例如我想转换:

~/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; } }
}

解决方法

您可以使用VirtualPathUtility类来执行此操作.这包含使用路径的各种方法.你需要的是ToAbsolute(),它将相对路径转换为绝对路径.

var path = VirtualPathUtility.ToAbsolute("~/asp/ClockState.aspx");

但是,您仍然可以在Response.Redirect调用中使用代字号,因此以下内容仍然有效:

Response.Redirect("~/asp/ClockState.aspx");

在使用Response.Redirect之前,您无需将URL转换为绝对路径.

C++ 技术中的异常处理:如何使用异常对象来获取异常详细信息?

C++ 技术中的异常处理:如何使用异常对象来获取异常详细信息?

c++++ 异常处理获取异常详细信息的方法:使用异常对象 e.name() 获取异常类型。使用 e.what() 获取描述异常原因的文本消息。

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错误处理

html – JSP / Servlet HTTP 404错误处理

我想在我的网络应用中处理 HTML 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未明确处理的所有请求?

解决方法

它使用密钥javax.servlet.forward.request_uri存储为请求属性:

<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错误处理等更多相关知识的信息可以在本站进行查询。

本文标签: